No entiendo bien la necesidad, aparte de jugar con la sintaxis. Eso es precisamente lo que auto
fue diseñado para y auto
es compatible con el mismo estándar que agregó decltype
...
En cualquier caso, debe simular la llamada de función:
decltype(std::declval<A>()[0]) b = 0; // equivalent to `int b = 0;`