Я хочу, чтобы критик компилятора, когда я вызываю конструктор foo с классом , который НЕ получен из _base *. Текущий код позволяет использовать только foo < _base *>. Любое решение ?Специализация шаблона C++ через базовый класс
class _base
{
public:
// ...
};
class _derived: public _base
{
public:
// ...
};
template <typename T>
class foo
{
public:
foo() { void TEMPLATE_ERROR; }
};
template <> foo<_base*>::foo()
{
// this is the only constructor
}
основной код:
foo<_base*> a; // should work
foo<_derived*> b; // should work (but doesnt)
foo<int*> c; // should not work (and infact doesnt)
aaah, спасибо. я попытался понять, что сам по себе погружаюсь в форд-джунгли, но я наткнулся на множество кодовых программ, поэтому мне пришлось отступить. Но это именно то, что я ищу, спасибо. –
Я рекомендую вам прочитать «Modern C++ Design: Generic Programming and Design Patterns Applied» от Andrei Alexandrescu, если вы хотите узнать больше о связанных с шаблоном методах, подобных этому. –
+1 Это действительно хороший. И спасибо за рекомендацию! –