Подтвердить что ты не робот

Где disable_if в С++ 0x?

Boost имеет как enable_if, так и disable_if, но С++ 0x, по-видимому, отсутствует. Почему это было исключено? Есть ли возможности для метапрограмм в С++ 0x, которые позволяют мне построить disable_if в терминах enable_if?


О, я только заметил, что std::enable_if в основном boost::enable_if_c, и что в С++ 0x нет такой вещи, как boost::enable_if.

4b9b3361

Ответ 1

Если вы выглядите глупо, просто !expression вместо expression в параметре bool template в enable_if, чтобы он вел себя как a 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> {
};