Нет никакой гарантии - стандарт скажет «код неверен», и компилятор выдаст любую ошибку, которую решит.
Также не забывайте, что большинство компиляторов C ++ даже не генерируют оптимальноСозданные сообщения об ошибках - в данный момент нечего стандартизировать.Например, если вы напишите:
statement1 //no ;
statement2;
, они скажут no ; before statement2
, что правильно, но не так удобно и полезно, как no ; after statement1
.А сообщения об ошибках, генерируемые при компиляции шаблонов, настолько ужасны, что для них даже существуют автономные преттификаторы.