c ++ 0x中的disable_if在哪里?
题
Boost都有两者 enable_if
和 disable_if
, ,但是C ++ 0x似乎缺少后者。为什么被排除在外? C ++ 0x中是否有元编程设施,可以使我构建 disable_if
按照 enable_if
?
哦,我只是注意到 std::enable_if
基本上是 boost::enable_if_c
, ,而且没有这样的东西 boost::enable_if
在C ++ 0x中。
解决方案
冒着看起来很愚蠢的风险,只是做 !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> {
};
不隶属于 StackOverflow