Где есть disable_if в C ++ 0x? - PullRequest
20 голосов
/ 24 июня 2010

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


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

1 Ответ

18 голосов
/ 24 июня 2010

С риском казаться глупым, просто сделайте !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> {
};
...