Decltype en la declaración del método de clase: error cuando se usa antes de que se declare el miembro "referenciado"
Considera elsiguiente código:
struct test {
auto func() -> decltype(data) {} // ERROR
int data;
};
int main() {
test t;
t.func();
}
Da el siguiente error:
main.cpp:2:29: error: 'data' was not declared in this scope
auto func() -> decltype(data) {}
Sin embargo, si colocodata
encimafunc()
, no da ningún error (código en vivo):
struct test {
int data;
auto func() -> decltype(data) {}
};
...
Y entonces mi pregunta es, ¿por qué?decltype
sin considerar miembros declarados después de esto (cuandodecltype
se utiliza en una declaración de método, no en la definición)? También quiero saber si hay algún cambio en este comportamiento en futuras versiones del estándar de idioma.
decltype
comportarse de manera diferente. Mi convención de codificación es colocar miembros de datos de clase debajo de las funciones de clase. Seguramente este comportamiento diferente afectaría la forma en que organizo a los miembros de mi clase. Le agradecería mucho que me proporcionara alguna solución que pudiera preservar mi convención de codificación.