Ich verstehe die Notwendigkeit nicht ganz, außer mit der Syntax zu spielen. Genau das, was auto
wurde für und entwickelt und für und auto
wird durch denselben Standard unterstützt, der hinzugefügt wurde decltype
...
Auf jeden Fall müssen Sie den Funktionsaufruf simulieren:
decltype(std::declval<A>()[0]) b = 0; // equivalent to `int b = 0;`