С++ для начинающих




Определение шаблона функции - часть 7


Определите, какие из данных определений шаблонов функций неправильны. Исправьте ошибки.

(a) template <class T, U, class V>

       void foo( T, U, V );

(b) template <class  T>

       T foo( int *T );

(c) template <class T1, typename T2, class T3>

       T1 foo( T2, T3 );

(d) inline template <typename T>

       T foo( T, unsigned int* );

(e) template <class myT, class myT>

       void foo( myT, myT );

(f) template <class T>

       foo( T, T );

(g) typedef char Ctype;

    template <class Ctype>

       Ctype foo( Ctype a, Ctype b );

Упражнение 10.2

Какие из повторных объявлений шаблонов ошибочны? Почему?

(a) template <class Type>

       Type bar( Type, Type );

    template <class Type>

       Type bar( Type, Type );

(b) template <class T1, class T2>

       void bar( T1, T2 );

    template <typename C1, typename C2>

       void bar( C1, C2 );

Упражнение 10.3

Перепишите функцию putValues() из раздела 7.3.3 в виде шаблона. Параметризуйте его так, чтобы было два параметра шаблона (для типа элементов массива и для размера массива) и один параметр функции, являющийся ссылкой на массив. Напишите определение шаблона функции.




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