Повышение имеет обоих enable_if
и disable_if
, но C++ 0x, кажется, скучает по последнему. Почему это было не учтено? Есть ли средства метапрограммирования в C++ 0x, которые позволяют мне создавать disable_if
с точки зрения enable_if
?
О, я просто заметил это std::enable_if
в основном boost::enable_if_c
, и это там не такая вещь как boost::enable_if
в C++ 0x.
Рискуя показаться глупым, просто используйте ! Выражение
вместо выражение
в параметре шаблона bool в 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> {
};