2012-02-14 2 views
0

Аргумент шаблона может быть константным выражением (§C.5), адресом объекта или функции с внешней связью (§9.2) или неперегруженным указателем на член (§15.5) , Указатель, используемый в качестве аргумента шаблона, должен иметь вид &ooff, где ooff - это имя объекта или функции или формы ff, где ff - это имя функции. Указатель на член должен иметь вид &XX::ooff, где ooff - это имя участника. В частности, строковый литерал неприемлем в качестве аргумента шаблона.действительный аргумент шаблона

Это из стройстовой книги. Какова логика того, что разрешено, а что нет? Почему строковый литерал неприемлем?

Я понимаю, что компилятор должен иметь возможность выводить тип аргумента, чтобы он мог генерировать код внутри этого типа. Спасибо за помощь

+1

Возможный дубликат [Строковые литералы не допускаются как параметры шаблона без шаблонов] (http://stackoverflow.com/questions/5547852/string-literals-not-allowed-as-non-type-template-parameters) –

+0

парень в этом посте объяснил это так хорошо, как сама книга. Это именно то, что я искал. – PnotNP

ответ

1

Компилятор не выводит типы аргументов шаблона непигового типа. Они указаны программистом. Нечего выводить.

Требования, предъявляемые к поставщику, позволяют во время компиляции определять, равны ли два указателя. Это, в свою очередь, необходимо для определения того, относятся ли два использования шаблона класса (шаблон функции) к одному типу (функции).

Смежные вопросы