#include <type_traits>
auto f()
{
struct A { int f() { return 0; } };
return A();
}
int main()
{
std::remove_cvref_t<decltype(f())> a;
return a.f();
}
Код выше может быть успешно скомпилирован. Мне просто интересно:
Законно ли это в соответствии со стандартом C ++?