我有一个模板类,其中有一个正常的函数。但我只想为模板类的某些实例启用此正常功能。我查看了 boost::enable_if ,它并不完全适合我的需要/可能我无法使用它来满足我的需要。
typedef boost::mpl::vector< bool, int, double > CheckTypes;
template<class X>
class P
{
void init( int x,
typename boost::enable_if< boost::mpl::contains<CheckTypes, X> >::type* dummy = 0);
};
有人可以帮助 mw 解决这个问题吗?重要的是解决方案不应该期望调用代码有任何东西。并且该类被显式实例化。
谢谢, 戈库尔。
最佳答案
enable_if
通常用于区分函数的不同定义。从某种意义上来说,它是一种更强大的重载方式。
看来您仅在条件成立时才尝试启用函数,否则给出编译错误,因为您只有一个init定义
。如果这是正确的,您可能需要查看 BOOST_STATIC_ASSERT
(或 c++0x 中的 static_assert
)。
关于c++ - 选择性启用模板类功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4581512/