以下代码是否符合(任何)C ++ ISO标准?
#include <functional>
auto a() {
struct Foo {
};
return []() {return Foo{}; };
}
int main()
{
auto l = a()();
decltype(l) ll;
//Foo f; //error: unknown type name 'Foo'
return 0;
}
The compilers(Visual Studio 2015,最新的Clang和最新的GCC)接受了这一点,但是decltype应该让我访问Foo似乎很奇怪。
答案 0 :(得分:5)
是
实际上是作用域类型的名称,而不是类型本身。
你没有使用它的名字,所以一切都很好。