Шаблонные методы и шаблонные классы C ++ - PullRequest
5 голосов
/ 08 октября 2011

Могут ли функции-члены класса быть шаблонными функциями или они должны быть статическими функциями класса.В принципе, может ли класс и функция быть технически реализованы отдельно по требованию?

Каковы ограничения использования функции шаблона в качестве члена класса шаблона?И то, и другое можно сделать одновременно, или это или так, или?

Ответы [ 2 ]

9 голосов
/ 08 октября 2011

Вы можете иметь функции-члены шаблонных классов, например:

template <typename T>
class Foo {
public:
    template <typename U>
    void bar(const T& t, const U& u);
};

template <typename T>
template <typename U>
void Foo<T>::bar(const T& t, const U& u) {
    // ...
}
6 голосов
/ 08 октября 2011

Методы класса могут быть шаблонными. Единственное ограничение - они не могут быть виртуальными.

РЕДАКТИРОВАТЬ:

Чтобы быть более полным, конструктор также может быть шаблоном

class X
{

    template<typename T>
    X( T t )
    {

    }

};

Но, конечно, должен быть только один не шаблонный деструктор

...