模板化建造师专业化

Templated Constructor Specialization

本文关键字:专业化      更新时间:2023-10-16

如何专门化模板化构造函数?

例如

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

如果没有办法,还有什么办法?制作一个专门的成员函数并调用它?

您可以始终重载:

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

当我们讨论这个话题时,你可以阅读Herb Sutter的这篇文章——为什么不专门化函数模板?