decltype na declaração do método de classe: erro quando usado antes do membro "referenciado" ser declarado
Considere ocódigo seguinte:
struct test {
auto func() -> decltype(data) {} // ERROR
int data;
};
int main() {
test t;
t.func();
}
Dá o seguinte erro:
main.cpp:2:29: error: 'data' was not declared in this scope
auto func() -> decltype(data) {}
No entanto, se eu colocardata
acimafunc()
, não dá erro (código ao vivo):
struct test {
int data;
auto func() -> decltype(data) {}
};
...
Então minha pergunta é: por quedecltype
não considerando membros declarados depois (quandodecltype
é usado em uma declaração de método, não na definição)? Também quero saber se há alguma alteração nesse comportamento em futuras iterações do padrão de idioma.
decltype
se comportar de maneira diferente. Minha convenção de codificação é colocar membros de dados de classe abaixo das funções de classe. Certamente esse comportamento diferente afetaria a maneira como eu organizo meus alunos. Ficaria muito grato se você pudesse fornecer qualquer solução alternativa que preservasse minha convenção de codificação.