C ++ 0x中的disable_if在哪里?

时间:2010-06-24 14:45:08

标签: c++ templates boost c++11 enable-if

Boost同时拥有enable_ifdisable_if,但C ++ 0x似乎缺少后者。为什么遗漏了? C ++ 0x中是否有元编程工具允许我根据disable_if构建enable_if


哦,我刚注意到std::enable_if基本上是boost::enable_if_c,并且在C ++ 0x中没有boost::enable_if这样的东西。

1 个答案:

答案 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> {
};