Boost都有两者 enable_ifdisable_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> {
};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top