Boost同时拥有enable_if
和disable_if
,但C ++ 0x似乎缺少后者。为什么遗漏了? C ++ 0x中是否有元编程工具允许我根据disable_if
构建enable_if
?
哦,我刚注意到std::enable_if
基本上是boost::enable_if_c
,并且在C ++ 0x中没有boost::enable_if
这样的东西。
答案 0 :(得分:18)
冒着看似愚蠢的风险,只需在!expression
的bool模板参数中执行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> {
};