Boost 同时具有enable_if
和disable_if
,但 C++0x 似乎缺少后者。为什么它被遗漏了?disable_if
C++0x中是否有元编程工具允许我构建enable_if
?
哦,我刚刚注意到std::enable_if
基本上是,并且在 C++0x 中boost::enable_if_c
没有这样的东西。boost::enable_if
冒着看起来很愚蠢的风险,只需在 bool 模板参数中做!expression
而不是让它表现得像? 当然,如果这个想法有效,您可以扩展它以编写具有类似行为的类?expression
enable_if
disable_if
disable_if
好的,我相信你可以这样实现disable_if
:
template <bool B, typename T = void>
struct disable_if {
typedef T type;
};
template <typename T>
struct disable_if<true,T> {
};