Шаблонная специализация конструктора - PullRequest
0 голосов
/ 26 февраля 2020

Как можно специализировать шаблонный конструктор?

например,

class MyClass
{
    int x = 0;
    float y = 0;
public:
    template< typename T >
    MyClass( T foo ): y { foo }
    { }

    template< >
    MyClass< int >( int foo ): x { foo }
    { }
};

Если нет пути, какая альтернатива? Делать специализированную функцию-член и вызывать ее?

1 Ответ

4 голосов
/ 26 февраля 2020

Вместо этого вы всегда можете перегрузить:

class MyClass
{
    int x = 0;
    float y = 0;
public:
    template <typename T>
    MyClass(T foo): y{foo}
    { }

    MyClass(int foo): x{foo}
    { }
};

Пока мы находимся на этой теме c, вы можете прочитать эту статью у Херба Саттера Почему бы не специализировать шаблоны функций?

...