Soweit ich im Standard sehen kann, ist der folgende Code gültig. Es kompiliert in MSVC1025.
%Vor% Die Qualifikationsmerkmale const
und volatile
scheinen in diesen Deklarationen sinnlos zu sein. Sie helfen weder dem Compiler noch dem Programmierer, noch verletzen sie ihn.
Der Standard scheint nicht darauf aus zu sein, diese "leeren Zweideutigkeiten" auszumerzen. Bei der leeren Deklaration ;
ist dies explizit erlaubt.
Gibt es andere Fälle von Token, die nach der Vorverarbeitung für die Bedeutung des Ausdrucks irrelevant sind?
Sowohl clang als auch gcc lehne diesen Code mit -pedantic-errors
ab. Clam bietet den folgenden Fehler:
Der C ++ - Standardentwurf Abschnitt 7.1.6.1 Der cv-Qualifier [dcl.type.cv] sagt:
[...] Wenn ein cv-Qualifier in einem decl-specifier-seq erscheint, muss die init-declator-list der Deklaration nicht leer sein. [...]
Tags und Links c++ language-lawyer