Aşağıdaki örnek programı düşünün.
#include <iostream>
int main()
{
typedef float T;
0.f.T::~T();
}
Bu program tarafından derlenmektedir Microsoft Visual Studio Community 2019.
Ama clangve gccbu gibi bir hata sorunu
prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T'
7 | 0.f.T::~T();
| ^~~~~
İfadeyi böyle yazmak için ( 0.f ).T::~T()her üç derleyici de programı derler.
Yani bir soru ortaya çıkıyor: bu kayıt 0.f.T::~T()sözdizimsel olarak geçerli mi? Ve eğer değilse, hangi sözdizimsel kural bozulur?
(0.f).T::~T();
float f = 1.0f.t;, sayısal değişmezle ilgili hata üretir.
float bir tiptir, aramanız için bir yıkıcı yoktur. Elle arama yapan yıkıcıları ne yapıyorsunuz? Yeni yerleşim bölgesinin dışında, bu büyük bir hayır-hayır olmalıdır.
0.fve.Them GCC ve Clang neden olur ... bunu kabul etmek