sfinae

¿Cómo puedo agregar reflexión a una aplicación C++?

Me gustaría poder hacer introspección de una clase de C++ por su nombre, contenido (es decir, miembros y sus tipos), etc. Est ... ierta información limitada usando RTTI. ¿Qué bibliotecas adicionales (u otras técnicas) podrían suministrar esta información?

Comprobar si una clase tiene una función miembro de una firma dada

Estoy pidiendo un truco de plantilla para detectar si una clase tiene una función miembro específica de una firma dada. El p ... global definida en un espacio de nombres mientras estoy en otro) ¿Puedes darme una pista para resolver este rompecabezas?

Por qué debería evitar std::habilitar si en firmas de función

Scott Meyers publicóel contenido y el estado de su próximo libro EC++11. Escribió que un elemento en el libro podría ser "Ev ... on signature but of template specializations)? ¿Existen diferencias entre las plantillas de funciones miembro y no miembro?

Cómo funciona` void t'

Vi la charla de Walter Brown en Cppcon14 sobre programación moderna de plantillas ( Parte I, Parte II ) donde presentó su téc ... one. ¿Por qué es eso? (No veo por qué este tipo necesita coincidir, no solo cualquier tipo predeterminado hace el trabajo?)

Ejemplos de C++ SFINAE?

Quiero entrar en más meta-programación de plantillas. Sé que SFINAE significa " el fracaso de la sustitución no es un error."¿ Pero puede alguien mostrarme un buen uso de SFINAE?

¿Qué es "Expresión SFINAE"?

En http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx , el equipo de VC++ declara oficialmente que aún no han i ... x1, x2; X x3 = f(x1, x2); // deduction fails on #1 (cannot add X+X), calls #2 Mi pregunta es: ¿Qué es "Expresión SFINAE"?

Explicar C++ SFINAE a un programador no C++

¿Qué es SFINAE en C++? ¿Puede explicarlo en palabras comprensibles para un programador que no está versado en C++? Además, ¿a qué concepto en un lenguaje como Python corresponde SFINAE?

Seleccione constructor de clase usando habilitar si

Considere el siguiente código: #include <iostream> #include <type_traits> template <typename T> struct A ... ; ¿Es algo así posible para constructor? ¿Es esto posible con otro constructor (s) (copy-constructor y move-constructor)?

Detección de constexpr con SFINAE

Estoy trabajando en la actualización de código C++ para aprovechar la nueva funcionalidad en C++11. Tengo una clase trait con ... r, pero me gustaría saber si el código es legal C++11. Especialmente porque entiendo que las reglas para SFINAE han cambiado.

¿Qué es decltype con dos argumentos?

Editar, para evitar confusiones: decltypeno acepta dos argumentos. Ver respuestas. Las siguientes dos estructuras se pu ... iona diferente de lo que pensaba. No pude encontrar ninguna documentación; solo se explica con una expresión en todas partes.

¿Cómo llamar a una función templada si existe, y algo más de lo contrario?

Quiero hacer algo como template <typename T> void foo(const T& t) { IF bar(t) would compile bar(t); EL ... uí, dividiendo foo en dos partes, pero parece que no puedo resolver los detalles. ¿Cuál es la forma más sencilla de lograrlo?

SFINAE para comprobar si hay funciones miembro heredadas

Usando SFINAE, i puede detectar si una clase dada tiene una cierta función miembro. Pero, ¿qué pasa si quiero probar las fun ... ;B, void (B::*)()>::value << endl; // false } Entonces, ¿hay una manera de probar las funciones miembro heredadas?

¿Cuál es exactamente el" contexto inmediato " mencionado en el estándar C++11 para el que se aplica SFINAE?

El párrafo 14.8.2 / 8 del estándar C++11 especifica las condiciones bajo las cuales una falla de sustitución resultará o no e ... o ocurre un error de sustitución en el "contexto inmediato " de ¿el tipo de función y sus tipos de parámetros de plantilla?

Cómo detectar si un método es virtual?

Traté de hacer un rasgos para encontrar si un método es virtual: (https://ideone.com/9pfaCZ ) // Seveval structs which shou ... ero check no se descarta para el tipo "malo" en SFINAE :( . ¿Cuál es la forma correcta de detectar si un método es virtual?

Deshabilitar condicionalmente un constructor de copia

Supongamos que estoy escribiendo una plantilla de clase C<T> que contiene un valor T, por lo que C<T> puede ser c ... uando todo lo que estoy tratando de hacer es deshabilitar un constructor. ¿Hay alguna opción mejor que no haya considerado?

Uso de plantillas de alias para sfinae: ¿el idioma lo permite?

Acabo de descubrir la siguiente técnica. Se ve muy cerca de uno de los conceptos propuestos sintaxis, funciona perfectamente ... as desired foo(ic); // fail to compile, as desired foo(std::move(i)); // ok foo(123); // ok }

Metaprogramación: Fallo de la Definición de Función Define una Función Separada

En esta respuesta defino una plantilla basada en la propiedad is_arithmetic del tipo: template<typename T> enable_if ... _string(T{})::value, string> (T t){ return static_cast<ostringstream&>(ostringstream() << t).str(); }

Por qué compilar error con enable if

¿Por qué esto no compila con gcc48 y clang32? #include <type_traits> template <int N> struct S { templat ... olución que funciona para mí. Haga que enable_if dependa de T: typename std::enable_if<(sizeof(T),N==1), int>::type