考虑以下演示程序。
#include <iostream>
int main()
{
typedef float T;
0.f.T::~T();
}
本程序由Microsoft Visual Studio Community 2019
.
但是clang
并gcc
发出这样的错误
prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T'
7 | 0.f.T::~T();
| ^~~~~
如果像这样写表达式,( 0.f ).T::~T()
那么所有三个编译器都会编译程序。
所以出现了一个问题:这个记录在0.f.T::~T()
语法上是否有效?如果不是,那么什么语法规则被打破了?