Resultados de la búsqueda a petición "c++14"

4 la respuesta

¿Por qué una plantilla con el tipo de retorno deducido no se puede cargar con otras versiones?

¿Por qué las siguientes dos plantillas son incompatibles y no se pueden sobrecargar? #include <vector> template<typename T> auto f(T t) { return t.size(); } template<typename T> auto f(T t) { return t.foobar(); } int main() ...

1 la respuesta

Referencias indirectas de reenvío

Es bien sabido que las referencias de reenvío "directo" funcionan de una manera fácil: template<typename T> void f(T &&t); // Here we are.Ahora, cómo usar referencias de reenvío de forma indirecta: template<typename T> void ...

1 la respuesta

tipo definido en función libre, accesible a través de auto exterior. ¿Error de idioma o función?

Definamos una clase dentro de una función libre y accedamos afuera: #include <iostream> auto myFunc(){ class MyType{public: int i = 0; int j = 1;}; return MyType(); } int main() { auto my_type = myFunc(); std::cout << my_type.i << " " << ...

1 la respuesta

Cómo hacer que std :: make_unique sea un amigo de mi clase

Quiero declararstd::make_unique funcionar como un amigo de mi clase. La razón es que quiero declarar mi constructorprotected y proporcionar un método alternativo para crear el objeto usandounique_ptr. Aquí hay un código de muestra: #include ...

1 la respuesta

¿Cómo es que esta lambda con una lista de captura vacía puede referirse al nombre de alcance de alcance?

En el estándar C ++ 14 § 5.1.2 / 12 muestra un ejemplo de una expresión lambda que aparentemente parece poder referirse a una variable de alcance de alcancex, aunque: la lista de captura está vacía, es decir, no hay captura ...

3 la respuesta

Conversión de tipo en la plantilla sin argumento sin tipo constexpr

Considere el siguiente código: struct A { constexpr operator int() { return 42; } }; template <int> void foo() {} void bar(A a) { foo<a>(); } int main() { foo<A{}>(); const int i = 42; foo<i>(); // (1) A a{}; static_assert(i == a, ""); bar(a); ...

3 la respuesta

Constructor predeterminado eliminado. Todavía se pueden crear objetos ... a veces

La visión ingenua, optimista y oh ... tan equivocada de la sintaxis de inicialización uniforme de c ++ 11Pensé que desde C ++ 11 los objetos de tipo definidos por el usuario deberían construirse con el nuevo{...} sintaxis en lugar de la ...

2 la respuesta

construible trivialmente predeterminado std :: opcional y std :: variante

¿Es permitable diseñarstd::optional (actualmentestd::experimental::optional) de tal manera que, para el tipo constructivo trivialmente predeterminadoT correspondientestd::optional< T > ¿también es trivialmente predeterminado construible? La ...

1 la respuesta

Sobrecarga de plantilla C ++ con enable_if: comportamiento diferente con g ++ y clang

Durante la resolución de una sobrecarga de una función miembro con plantilla de una clase base, observé un comportamiento diferente entre g ++ (5.2.1-23) y clang (3.8.0), con-std=c++14. #include <iostream> #include <type_traits> struct Base { ...

2 la respuesta

Por lo que puedo decir, la función a continuación no es constexpr, pero el código se compila en clang y g ++. ¿Qué me estoy perdiendo?

Obtuve este ejemplo de §5.19 / 2 en N4140: constexpr int incr(int &n) { return ++n; }Por lo que puedo decir, esto no es unconstexpr función. Pero el fragmento se compila en clang y g ++. Verejemplo en vivo ...