Шаблоны C++: различия между версиями

639 байт убрано ,  1 год назад
→‎Ошибки в шаблонах: Были приведены не ошибки шаблонов, а ошибки функций, совершенно не уникальные для шаблонов
(Требуется пояснение термина)
(→‎Ошибки в шаблонах: Были приведены не ошибки шаблонов, а ошибки функций, совершенно не уникальные для шаблонов)
 
=== Ошибки в шаблонах ===
Некоторые ошибки в описании шаблона могут быть выявлены уже в месте описания. Эти ошибки не зависят от конкретных параметров. Например:
 
<source lang="cpp">
template< class T >
void f( T data )
{
T *pt = 7; // ошибка: инициализация указателя целым числом
datA = 0; // ошибка: неизвестный идентификатор datA
*pt = data // ошибка: нет точки с запятой
}
</source>
 
Ошибки, связанные с использованием конкретных параметров шаблона, нельзя выявить до того, как шаблон использован. Например, шаблон <code>min</code> сам по себе не содержит ошибок, однако использование его с типами, для которых операция <code>'<'</code> не определена, приведёт к ошибке:
 
Анонимный участник