Язык программирования C++ для профессионалов



Параметры шаблона типа - часть 2


template<class T, int sz> class buffer { T v[sz]; // ... };

void f() { buffer<char,20> buf1; buffer<complex,20> buf2; buffer<char,20> buf3; buffer<char,100> buf4;

buf1 = buf2; // ошибка: несоответствие типов buf1 = buf3; // нормально buf1 = buf4; // ошибка: несоответствие типов // ... }

Если в шаблоне типа для класса используются параметры, задающие не типы, возможно появление конструкций, выглядящих двусмысленно:

template<int i> class X { /* ... */ };

void f(int a, int b) { X < a > b>; // Как это понимать: X<a> b и потом // недопустимая лексема, или X< (a>b) >; ? }

Этот пример синтаксически ошибочен, поскольку первая угловая скобка > завершает параметр шаблона. В маловероятном случае, когда вам понадобится параметр шаблона, являющийся выражением "больше чем", используйте скобки: X< (a>b)>.

on_load_lecture()

Дальше »

  Если Вы заметили ошибку - сообщите нам.  

Страницы:

« |

1

|

2

|

3

|

4

|

5

|

6

|

7

|

8

|

9

|

вопросы | »

|

учебники

|

для печати и PDA

Курсы | Учебные программы | Учебники | Новости | Форум | Помощь



Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование




Содержание  Назад  Вперед