От: | Bell | ||
Дата: | 31.07.08 04:31 | ||
Оценка: |
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>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>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>
//------------------------------------------------
//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) {}