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.

¿Fue útil?

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
scroll top