Требуется ли компилятор для диагностики синтаксических ошибок в шаблонах?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Требуется ли компилятор для диагностики синтаксических ошибок в шаблонах?

Сообщение Anonymous »


В [temp.res.general] есть пример, который меня смущает:

template class X { // ... пустота г(Т т) { +; // может быть диагностирован, даже если X​::​g не создан } }; Слово «может» предполагает, что компилятору разрешено диагностировать +;, однако это не обязательно. Насколько мне известно, +; не является допустимым синтаксисом C++.

Если требуется, то где формулировка, подтверждающая это? Если нет, то как далеко вы сможете зайти?

void g(T t) { +(()=/)(/)§(/)(/)/=)$§/%)=§(/&%=)§/(%)=§/%§; // требуется диагностика? }}}}}}}}}}}}}}}}}}}}}; // требуется диагностика? } Похоже, что компилятору приходится сопоставлять фигурные скобки, чтобы знать, произошла ли синтаксическая ошибка внутри шаблона или снаружи. Возникает еще два вопроса:
[*]Являются ли синтаксические ошибки просто IFNDR в целом, а не только в шаблонах? [*]Есть ли какая-либо формулировка, в которой говорится, что необходимо выполнять сопоставление фигурных скобок?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»