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