Resultados de la búsqueda a petición "overload-resolution"

1 la respuesta

Prioridad de inicialización de lista del objeto del mismo tipo

#include <iostream> #include <initializer_list> using namespace std; struct CL { CL(){} CL (std::initializer_list<CL>){cout<<1;} CL (const CL&){cout<<2;} }; int main() { CL cl1; CL cl2 {cl1}; //prints 21 }Aquí estáCL struct con copy constructor y ...

2 la respuesta

Resolución de sobrecarga: asignación de llaves vacías

Escribi algun codigoS s; ...s = {};, esperando que termine igual queS s = {};. Sin embargo no lo hizo. El siguiente ejemplo reproduce el problema: #include <iostream> struct S { S(): a(5) { } S(int t): a(t) {} S &operator=(int t) { a = t; return ...

2 la respuesta

Reglas de sobrecarga de funciones con plantilla de C ++

Al sobrecargar una función con plantilla, ¿cómo debe elegir el compilador a qué versión de la función llamar si tiene la opción de: Llame a una versión con plantilla de la función (comofunc<T>(foo))Llame a una versión sobrecargada de la función ...

3 la respuesta

¿Por qué el constructor de plantilla variadic coincide mejor que el constructor de copia?

El siguiente código no se compila: #include <iostream> #include <utility> struct Foo { Foo() { std::cout << "Foo()" << std::endl; } Foo(int) { std::cout << "Foo(int)" << std::endl; } }; template <typename T> struct Bar { Foo foo; Bar(const Bar&) ...

3 la respuesta

¿Por qué se elige un método genérico cuando existe uno no genérico?

El siguiente programa produce esta salida: Foo<T> called Process is terminated due to StackOverflowException. Entonces,Foo(baz) llama al genéricoFoo<T>, peroBar(baz) recurre y haceno llamadaBar<T>. Estoy en C # 5.0 y Microsoft .NET. El ...

2 la respuesta

Lambdas sobrecargadas en C ++ y diferencias entre clang y gcc

Estoy jugando con un truco para sobrecargar lambdas en C ++. Específicamente: // For std::function #include <functional> // For std::string #include <string> // For std::cout #include <iostream> template <class... F> struct overload : F... { ...

3 la respuesta

¿Cómo se determina la ambigüedad en el algoritmo de resolución de sobrecarga?

Estoy tratando de entender el método de resolución de sobrecarga. ¿Por qué es esto ambiguo? void func(double, int, int, double) {} void func(int, double, double, double) {} void main() { func(1, 2, 3, 4); }pero esto no es? void func(int, int, ...

1 la respuesta

¿Por qué la caída del puntero tiene prioridad sobre una plantilla deducida?

Digamos que estoy escribiendo una función para imprimir la longitud de una cadena: template <size_t N> void foo(const char (&s)[N]) { std::cout << "array, size=" << N-1 << std::endl; } foo("hello") // prints array, size=5Ahora quiero extenderfoo ...

1 la respuesta

Inicialización de lista y resolución de sobrecarga fallida del constructor initializer_list

Lo siguiente no se compila conclang35 -std=c++11: #include <iostream> #include <string> #include <initializer_list> class A { public: A(int, bool) { std::cout << __PRETTY_FUNCTION__ << std::endl; } A(int, double) { std::cout << ...

1 la respuesta

Resolución de sobrecarga peculiar con while (verdadero)

Estaba implementando sobrecargas de sincronización / asíncrona cuando me encontré con esta situación peculiar: Cuando tengo una expresión lambda regular sin parámetros o un valor de retorno, va alRun sobrecargar con elAction parámetro, que es ...