¿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.