Вопрос

Университет имеет оба 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> {
};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top