¿Dónde está disable_if en C++ 0x?
templates boost (1)
A riesgo de parecer estúpido, simplemente haga !expression
lugar de expression
en el parámetro de la plantilla bool en enable_if
para que se comporte como un disable_if
? Por supuesto, si esa idea funciona, ¿podría expandirla para escribir una clase con el comportamiento disable_if
?
Ok, creo que podrías implementar disable_if
esta manera:
template <bool B, typename T = void>
struct disable_if {
typedef T type;
};
template <typename T>
struct disable_if<true,T> {
};
Boost tiene tanto enable_if
como disable_if
, pero parece que a C ++ 0x le falta este último. ¿Por qué fue dejado de lado? ¿Existen facilidades de meta-programación en C ++ 0x que me permitan construir disable_if
en términos de enable_if
?
Oh, acabo de notar que std::enable_if
es básicamente boost::enable_if_c
, y que no existe tal cosa como boost::enable_if
en C ++ 0x.