Почему это работает:
template <typename A>
struct S {
A a;
template <typename B>
auto f(B b) ->
decltype(a.f(b))
{
}
};
Но это не (a
и f
местами смены):
template <typename A>
struct S {
template <typename B>
auto f(B b) ->
decltype(a.f(b))
{
}
A a;
};
говоря, что a
не объявляется в этой области (внутри decltype), но добавление явного this->
заставляет его работать.