Pergunta

Parece uma pergunta trivial para mim, talvez eu não tenha encontrado a documentação certa.

Eu tenho uma estrutura A e quero definir o parâmetro B como de retorno do tipo de função A:

struct A{
    int operator[](int);
};

E então em algum momento

decltype(A::operator[]) b = 0;

Eu poderia fazer isso: mas é feio ..

A a;
decltype(a[0]) b = 0;

(Pode ser duplo / int etc), não quero usar modelos.

Obrigado,

Foi útil?

Solução

Não entendo muito bem a necessidade, além de brincar com a sintaxe. Isso é exatamente o que auto foi projetado para e auto é suportado pelo mesmo padrão que adicionou decltype...

De qualquer forma, você precisa simular a chamada de função:

decltype(std::declval<A>()[0]) b = 0;   // equivalent to `int b = 0;`
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top