¿Dónde está disable_if en C ++ 0x?
Pregunta
Boost tiene tanto enable_if
y disable_if
, pero C ++ 0x parece faltar esta última. ¿Por qué fue dejado fuera? ¿Hay instalaciones meta de programación en C ++ 0x que me permiten construir disable_if
en términos de enable_if
?
Oh, sólo se dio cuenta de que std::enable_if
es básicamente boost::enable_if_c
, y que no hay tal cosa como boost::enable_if
en C ++ 0x.
Solución
A riesgo de parecer tonto, acaba de hacer !expression
en lugar de expression
en el parámetro de plantilla bool en enable_if
a hacer que se comporte como un disable_if
? Por supuesto, si la idea funciona, usted podría ampliar en él para escribir una clase con disable_if
-como comportamiento?
Ok, creo que se podría aplicar disable_if
como esto:
template <bool B, typename T = void>
struct disable_if {
typedef T type;
};
template <typename T>
struct disable_if<true,T> {
};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow