Я не совсем понимаю потребность, кроме игры с синтаксисом. Это именно то auto
был разработан, и auto
поддерживается тем же стандартом, который добавил decltype
...
В любом случае, вам необходимо смоделировать вызов функции:
decltype(std::declval<A>()[0]) b = 0; // equivalent to `int b = 0;`