c++ templates boost c++11 enable-if

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