Por qué funciona este código: template< typename T, std::enable_if_t<std::is_same::value, T>* = nullptr> void Add(T) {} template< typename T, std::enable_if_t<!std::is_same::value, T>* = nullptr> void Add(T) {} y puede distinguir correctamente entre estas dos llamadas: Add(1); Add(1.0); mientras que el siguiente código, si se comstack, ¿da como resultado la redefinición del error Add () ? template< typename […]
Si tengo una tupla con diferentes tipos de elementos como std::tuple ¿Y cómo obtener el índice de un tipo de elemento? template struct Index { enum {value = ?;} }; Gracias.
¿Cómo implemento una macro no operativa en C ++? #include #ifdef NOOP #define conditional_noop(x) what goes here? #else #define conditional_noop(x) std::cout << (x) #endif int main() { conditional_noop(123); } Quiero que esto no haga nada cuando se define NOOP e imprime “123”, cuando NOOP no está definido.
Estoy tratando de implementar un método para un árbol binario que devuelve una secuencia. Quiero usar la secuencia devuelta en un método para mostrar el árbol en la pantalla o para guardar el árbol en un archivo: Estos dos métodos están en la clase del árbol binario: Declaraciones: void streamIND(ostream&,const BinaryTree*); friend ostream& operator<<(ostream&,const BinaryTree&); […]
Supongamos que tengo una función de template : template T produce_5_function() { return T(5); } ¿Cómo puedo pasar esta template completa a otra template ? Si produce_5_function fue un funtor, no habría problema: template struct produce_5_functor { T operator()() const { return T(5); } }; template<templateclass F> struct client_template { int operator()() const { return […]
Gcc y clang parecen estar en desacuerdo sobre si este código debe comstackrse o no: #include template struct MyDelegate { }; template struct signature_traits; template <template class Delegate, typename Signature> struct signature_traits<Delegate> { using type = Signature; }; static_assert(std::is_same_v< void(int, int), signature_traits<MyDelegate>::type >); Vea la salida de godbolt aquí y pruébelo . Estoy a favor […]
Tengo una clase de plantilla, lo que quiero hacer es lo siguiente Asegúrese de que un objeto se crea una instancia solo si el parámetro de plantilla pasado es un subtipo del tipo deseado Comunica al usuario del código por adelantado qué es lo que el parámetro de la plantilla debe satisfacer (1) es una […]
template struct Factorial { enum { value = n * Factorial::value}; }; template struct Factorial { enum {value = 1}; }; int main() { std::cout << Factorial::value; std::cout << Factorial::value; } el progtwig anterior calcula el valor factorial durante el tiempo de comstackción. Quiero imprimir valor factorial en tiempo de comstackción en lugar de en […]
¿Es posible detectar si existe una clase en C ++ con SFINAE ? Si es posible, ¿cómo? Supongamos que tenemos una clase proporcionada solo por algunas versiones de una biblioteca. Me gustaría saber si es posible usar SFINAE para detectar si la clase existe o no. El resultado de la detección es arbitrario, digamos una […]
sugiero que tengo una función de plantilla como la siguiente: template void doSomething() { T a; // a is correctly initialized if T is a class with a default constructor … }; Pero la variable a deja sin inicializar, si T es un tipo primitivo. Puedo escribir T a (0), pero esto no funciona si […]