programacion - que es una clase en c++
DevoluciĆ³n del tipo de devoluciĆ³n con una variable miembro privada (2)
Como se explicó en esta sesión de preguntas y respuestas de ayer , tanto g ++ 4.8 como Clang 3.3 se quejan correctamente del código a continuación con un error como "''b_'' no se declaró en este ámbito"
#include <iostream>
class Test
{
public:
Test(): b_(0) {}
auto foo() const -> decltype(b_) // just leave out the -> decltype(b_) works with c++1y
{
return b_;
}
private:
int b_;
};
int main()
{
Test t;
std::cout << t.foo();
}
Mover la sección private
a la parte superior de la definición de clase elimina el error e imprime 0.
Mi pregunta es, ¿este error también desaparecerá en C ++ 14 con la deducción por tipo de retorno , de modo que pueda omitir el tipo de decltype
y tener mi sección private
al final de la definición de la clase?
NOTA : Realmente funciona basado en la respuesta de @JesseGood.
No lo creo, porque C ++ 14 tendrá una deducción automática del tipo de retorno. Lo siguiente compila con g ++ 4.8 al pasar la -std=c++1y
.
auto foo() const
{
return b_;
}
No, pero ya no hay necesidad de esto porque puedes decir
decltype(auto) foo() const {
return b_;
}
Esto deducirá el tipo de retorno automáticamente de su cuerpo.