cig*_*ien 6 c++ language-lawyer
以下程序是否格式良好?
template<typename T>
void f() { T{}.m; }
using u = decltype(f<int>);
Run Code Online (Sandbox Code Playgroud)
这是要试验的代码。
实例化f<int>是错误的,但f<int>这里没有在评估上下文中使用,所以我认为应该没问题。clang 同意,但是 gcc 抱怨:
In instantiation of 'void f() [with T = int]':
error: request for member 'm' in '0', which is of non-class type 'int'
Run Code Online (Sandbox Code Playgroud)
我不明白为什么 gcc 在这里实例化任何东西。
那么这段代码是格式错误的,还是 gcc 的错误?