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;`