Где отключить_if в c ++ 0x?
Вопрос
Университет имеет оба 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
В параметре шаблона 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> {
};
Не связан с StackOverflow