There are two type is_foo_type functor
For example
is_double
can be
---------
template<typename T>
struct is_double_template : boost::is_same
{};
---------
or
---------
struct is_double_runtime
{
template<typename T>
bool operator()(T x){return false;}
bool operator()(double x){return true;}
};
---------
Are there any standard naming rule distinguish these functor?
is_foo_runtime
is_foo_compiletime ?
The compile-time functor can convert to runtime factor using :
---------
template<typename IsTemplateMplLambda>
struct is_templated_type_to_runtime
{
typedef
struct is_templated_type_runtime {
template<typename T>
bool operator()(T)
{
return boost::mpl::apply::type::value;
}
} type;
};
---------
usage
---------
typedef boost::mpl::lambda
::type is_double_mpl_lambda;
double x=1.1;
int i=2;
is_templated_type_to_runtime::type
is_double_runtime_object;
std::cout << is_double_runtime_object(x) << std::endl;
std::cout << is_double_runtime_object(i) << std::endl;
---------