O ile widzę w standardzie, następujący kod jest prawidłowy. Kompiluje się w MSVC1025.Standardowa niejednoznaczność C++
const struct omg;
struct omg volatile;
int main()
{
return 0;
}
Kwalifikatorom const
i volatile
wydają się bezcelowe w tych deklaracjach. Nie pomagają ani nie szkodzą ani kompilatorowi, ani programistom.
Norma nie wydaje się skłonna do wyeliminowania tych "pustych niejednoznaczności". W przypadku pustej deklaracji ;
jest to wyraźnie dozwolone.
Czy istnieją inne przypadki tokenów, które po wstępnym przetworzeniu są nieistotne dla znaczenia wyrażenia?
[ 'register'] (http: // stackoverflow.com/questions/3207018/register-keyword-in-c) –
Nie uznałbym MSVC za wiarygodnego arbitra tego, co standard dopuszcza lub wymaga. I jestem skłonny wątpić, że sytuacja zmieni się przed rokiem 11025 :-) –
kończy się niepowodzeniem na g ++: http://coliru.stacked-crooked.com/a/b486009ecb10f5e7 – NathanOliver