C++ 3d.Комментарии


Другие операции


К сожалению, вызов явно квалифицированного шаблона члена требует довольно сложного и редкого синтаксиса.

К счастью, это не так: в данном случае этот "довольно сложный и редкий синтаксис" не требуется.

В самом деле, если разрешено f<int>(); // f -- функция-шаблон

то почему вдруг компилятор не может правильно разобраться с obj.f<int>(); // f -- функция-шаблон, член класса

Может, и разбирается!

Исторически, непонимание возникло из-за того, что:

  1. непосредственно этот туманный аспект использования квалификатора template был изобретен комитетом по стандартизации, а не д-ром Страуструпом;

  2. первым компилятором, поддерживающим экспериментальные (на тот момент) нововведения, был aC++ от HP. Данный компилятор ошибочно требовал наличия квалификатора, что, вкупе с неочевидным текстом стандарта, не могло не ввести в заблуждение.

Дальнейшее развитие темы "сложного и редкого синтаксиса" можно найти в разделе B.13.6. template как квалификатор.




- Начало -  - Назад -  - Вперед -