模板化建造师专业化
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的这篇文章——为什么不专门化函数模板?
相关文章:
- 如何使用默认参数等选择模板专业化
- 模板化建造师专业化
- 类模板的成员功能的定义在单独的TU中完全专业化
- 部分专业化和嵌套模板
- 模板专业化可以进入我的.cpp吗?
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 部分专业化和对标准::void_t<>的需求
- "专业化不参与超载"
- 特定好友功能专业化
- 是否可以混合使用SFINAE和模板专业化?
- 为什么在班级专业化上会出现错误?
- enable_if如何帮助选择类模板的专业化?
- std::initializer_list可以专业化吗?
- 派生类中纯虚拟基方法的专业化
- "expected a '>'"类模板专业化?
- Clang不会编译GCC会编译的模板专业化
- 我可以用clang AST从模板专业化中获得默认的模板参数吗
- 函数模板部分专业化-有什么解决方法吗
- 类模板的编译错误,但其专业化除外
- 我应该声明我的函数模板专业化还是定义它们就足够了