首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可能有默认的副本构造函数和模板转换构造函数?

问是否可能有默认的副本构造函数和模板转换构造函数?
EN

Stack Overflow用户
提问于 2016-08-18 11:20:43
回答 1查看 42关注 0票数 3

如果我有这样的课

代码语言:javascript
复制
template <typename T>
class MyClass
{
    T myData;

public:
    T getValue() { return myData; }        

    template <typename V>
    MyClass(const MyClass<V>& other) :
        myData((T) other.getValue())
    {
    }
};

这意味着我提供了一个副本构造函数(用于V=T),因此根据这个链接Why no default move-assignment/move-constructor?,我不会得到默认的移动构造函数等等。

是否有一种方法使模板化构造函数仅作为转换构造函数工作,因此对于V!=T?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-18 11:24:10

你的前提是错误的。构造函数模板从未用于实例化副本(或移动)构造函数。换句话说,复制/移动构造函数总是非模板成员函数,即使成员函数模板可以生成具有适当复制/移动签名的构造函数。

因此,除了模板之外,您的类还将有一个普通的复制构造函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39016896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档