Preguntas etiquetadas con auto

La palabra clave `auto` fue reutilizada en C ++ 11 para un tipo deducido. Cuando se usa para reemplazar un nombre de tipo en una declaración de variable inicializada, la variable recibe el mismo tipo que el inicializador. Cuando se utiliza como un tipo de retorno, el tipo de retorno se especifica como un tipo de retorno final o se deduce de la expresión-retorno.

168
¿Qué nos dice auto &&?

Si lees código como auto&& var = foo(); donde fooes cualquier función que regresa por valor de tipo T. Entonces varhay un lvalue de tipo rvalue referencia a T. ¿Pero para qué implica esto var? ¿Significa que se nos permite robar los recursos de var? ¿Hay situaciones razonables en las que...

144
Palabra clave automática de C ++. ¿Por qué es mágico?

De todo el material que utilicé para aprender C ++, autosiempre ha sido un especificador de duración de almacenamiento extraño que no tenía ningún propósito. Pero recientemente, encontré un código que lo usaba como un nombre de tipo en sí mismo. ¡Por curiosidad lo probé, y asume el tipo de lo que...

139
¿Por qué puedo usar auto en un tipo privado?

De alguna manera me sorprendió que el siguiente código se compile y se ejecute (vc2012 y gcc4.7.2) class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; // Foo::Bar b = f.Baz(); // error auto b = f.Baz(); // ok std::cout << b.i; } ¿Es correcto...

128
operador de flecha (->) en el encabezado de la función

Encontré el siguiente código: template <typename T, typename T1> auto compose(T a, T1 b) -> decltype(a + b) { return a+b; } Hay una cosa que no puedo entender: ¿Dónde podría averiguar qué significa el operador de flecha ( ->) en el encabezado de la función? Supongo, lógicamente, que el...

125
¿Por qué auto a = 1; compilar en C?

El código: int main(void) { auto a=1; return 0; } se compila sin errores por el compilador de MS Visual Studio 2012, cuando el archivo tiene la extensión .c. Siempre he pensado que cuando usas la extensión .c, la compilación debe estar de acuerdo con la sintaxis de C y no con C ++. Además, por...

124
Lambda regresa: ¿es esto legal?

Considere este programa bastante inútil: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Básicamente...

114
¿Cómo funciona lambda genérico en C ++ 14?

¿Cómo funciona lambda genérico ( autopalabra clave como tipo de argumento) en el estándar C ++ 14? ¿Se basa en plantillas C ++ donde para cada tipo de argumento diferente, el compilador genera una nueva función con el mismo cuerpo pero tipos reemplazados (polimorfismo en tiempo de compilación) o...

113
¿Existe la inferencia automática de tipos en Java?

¿Existe un autotipo de variable en Java como el que tiene en C ++? Un ejemplo: for ( auto var : object_array) std::cout << var << std::endl; for( auto var : object_array) var.do_something_that_only_this_particular_obj_can_do(); Sé que hay un bucle for mejorado en Java, pero ¿hay...

88
C ++ auto y vs auto

Al crear variables locales, ¿es correcto usar (const) auto&o auto? p.ej: SomeClass object; const auto result = object.SomeMethod(); o const auto& result = object.SomeMethod(); Donde SomeMethod () devuelve un valor no primitivo, tal vez otro tipo definido por el usuario. Tengo...

16
std :: pair <auto, auto> tipo de retorno

Estaba jugando con autoadentro std::pair. En el siguiente código, fse supone que la función devuelve una std::pairde los tipos que dependen de un parámetro de plantilla. Un ejemplo de trabajo: EJEMPLO 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; //...