Re: К-во аргументов в шаблонном методе
От: Bell Россия  
Дата: 31.07.08 04:31
Оценка:
Здравствуйте, Logot, Вы писали:

L>Не пойму, что имеет ввиду Александреску, цитата:


L>

L>Шаблонная функция-член не может иметь несколько аргументов, заданых по умолчанию



L>
L>template<class T = int, class U = double>
L>class A
L>{
L>  void foo();
L>};

L>template<class T, class U>
L>void A<T, U>::foo()
L>{
L>}
L>


L>может это?

Нет, здесь речь идет о шаблоне класса.

L>
L>template<class T>
L>class B
L>{
L>  void foo(int val = 100);
L>};

L>template<class T>
L>void B<T>::foo(int val /* = 100*/)
L>{
L>}
L>


L>или это?

Нет, здесь речь о шаблоне класса и параметре по умолчанию.

L>
L>template<typename T = int, typename U = double>
L>class C
L>{
L>  void foo();
L>}

L>template<typename T = int, typename U = double> //error compile (default template arguments may not be used in function templates)
L>void C<T, U>::foo()
L>{
L>}
L>


Это просто первый пример с неправильнным синтаксисом.

L>поясните плиз

Скорее всего речь об этом:

//------------------------------------------------
//Ok
template<class T = int, class U = int>
class test1 {};

//------------------------------------------------
//Ok
template<class T = int, class U = int>
class test2
{
   void mf2(T t, U u);
};

template<class T, class U>
void test2<T, U>::mf2(T t, U u) {}


//------------------------------------------------
//Так нельзя - шаблон функции не может иметь аргументы по умолчанию
template<class T = int, class U = int>
void f1(T t, U u) {}

//------------------------------------------------
//Так нельзя - шаблон функции-члена не может иметь аргументы по умолчанию
class test3
{
   template<class T = int, class U = int>
   void mf3(T t, U u);
};

template<class T, class U>
void test3::mf3(T t, U u) {}
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.