Resultados de la búsqueda a petición "sfinae"
Cómo SFINAE fuera de los parámetros no contenedores
Tengo una función de plantilla que quiero habilitar solo para contenedores estándar (o contenedores compatibles con contenedores estándar, que al menos proporcionan unbegin() función miembro). Estoy SFINAE fuera de contenedores de la siguiente ...
¿Qué SFINAE no funciona correctamente con la siguiente función has_member?
Estoy probando ejemplos deCharla TMP de Walter Brown [https://www.youtube.com/watch?v=Am2is2QCvxY]y estoy tratando de conseguir suhas_member implementación de trabajo. Sin embargo, la implementación parece falsamente cierta, lo que me lleva a ...
¿Por qué SFINAE (enable_if) no funciona para las funciones miembro de una plantilla de clase?
#include <type_traits> struct A{}; struct B{}; template <typename T> struct Foo { typename std::enable_if<std::is_same<T, A>::value>::type bar() {} typename std::enable_if<std::is_same<T, B>::value>::type bar() {} };Mensaje de error: 14:5: ...
¿El estándar requiere que std :: tuple_size sea compatible con SFINAE?
Editar anexar: el título de la pregunta era "¿el compilador de Visual Studio o Clang tienen un comportamiento incorrecto?", Pero se han cambiado. Entonces agrego aquí que clang y gcc lo compilan de la manera que pretendía, pero VS no. Tengo el ...
Generador de operador muy automático en C ++
C ++ tiene un lenguaje agradable que permite escribir clases que cumplen automáticamente ciertas relaciones entre operadores. Por ejemplo, esto permite definiroperator== y no molestar a definidooperator!= también. Esta es la idea detrás de ...
std :: especialización hash usando sfinae?
Como ejercicio, intentaba ver si podía usar SFINAE para crear unstd::hash especialización parastd::pair ystd::tuple cuando todos sus parámetros de plantilla son de un tipo sin signo. Tengo un poco de experiencia con ellos, pero por lo que ...
¿Por qué enable_if_t en los argumentos de plantilla se queja de redefiniciones?
Tengo el siguiente caso que funciona usandostd::enable_if : template<typename T, typename std::enable_if<std::is_same<int, T>::value>::type* = nullptr> void f() { } template<typename T, typename std::enable_if<std::is_same<double, ...
SFINAE no compiló [duplicar]
Esta pregunta ya tiene una respuesta aquí: SFINAE trabajando en el tipo de retorno pero no como parámetro de plantilla [/questions/15427667/sfinae-working-in-return-type-but-not-as-template-parameter] 3 respuestasMuy a menudo usé SFINAE antes, ...
void_t falla en Visual Studio 2015
No entiendo por qué la siguiente prueba siempre falla con Visual Studio 2015 (los activadores static_assert): #include <type_traits> using namespace std; template<class T> using try_assign = decltype(declval<T&>() = declval<T const&>()); ...
"Anti-SFINAE" que permite una sobrecarga si una expresión dada * no * está bien formada
Es fácil usar SFINAE para ocultar una sobrecarga de función particular si una expresión particular no está bien formada. Pero quiero hacer lo contrario, ocultar una sobrecarga si y solo si una expresión dadaes bien formado, y hacerlo de una ...