未评估上下文中的函数模板实例化

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 的错误?