Всем привет.
Имеется описание
template<class T, class S = Default<T>>
class Work
{
public:
Work( const T &t )
{
S::start ( t );
S::stop ( t );
}
};
Work<string,SettingsSpecial<string>> mySThread ( "thread1" );
пишу:
template<>
class Work<int>
{
public:
Work ( const int &t )
{
cout << "oops" << endl;
}
};
Work<int> t1 ( 2 );
Work<int,OtherSettings<int>> t2 (7);
t1 отлично «попадает» в специализацию, t2 нет.
Окей, понимаю что компилятор идет по ветке:
class Work<int,class S = Default<int>>
но, т.к. хз как это вообще правильно делать, то всякие потуги типа:
template<class S> class Work<int> { ... }
или
template<> class Work<int,class S<int>> {...}
естественно, не компилятся =(
Искал в Страуструпе от 2011, у Саттера, в гугле, нигде примеров такой темы не нашел.
Можно ли воопще описать специализацию для class T, равному какой либо MyClass (в отрывках листинга у меня int), так чтобы неважно какой class S использовался дефолтовый или отличный от него? Если да то как?
Спасибо.