问题描述
升压既有 enable_if
和 disable_if
,但的C ++ 0x似乎缺少了后者。为什么它留下了呢?是否有元编程中的C ++ 0x设施,让我建立 disable_if
而言 enable_if
?
Boost has both enable_if
and disable_if
, but C++0x seems to be missing the latter. Why was it left out? Are there meta-programming facilities in C++0x that allow me to build disable_if
in terms of enable_if
?
呵呵,我只注意到的std :: enable_if
基本的boost :: enable_if_c
,并且有没有这样的东西的boost :: enable_if
C ++ 0x中。
Oh, I just noticed that std::enable_if
is basically boost::enable_if_c
, and that there is no such thing as boost::enable_if
in C++0x.
推荐答案
目前似乎愚蠢的风险,只是做!EX pression
而不是前pression
在布尔模板参数在 enable_if
,使它像一个 disable_if
?当然,如果这个想法的作品,你可以只扩大它来写与 disable_if
A类样的行为?
At the risk of seeming stupid, just do !expression
instead of expression
in the bool template parameter in enable_if
to make it behave like a disable_if
? Of course if that idea works, you could just expand on it to write a class with disable_if
-like behavior?
好吧,我相信你可以实现 disable_if
是这样的:
Ok, I believe you could implement disable_if
like this:
template <bool B, typename T = void>
struct disable_if {
typedef T type;
};
template <typename T>
struct disable_if<true,T> {
};
这篇关于凡在的C ++ 0x是disable_if?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!