【发布时间】:2015-02-10 09:26:26
【问题描述】:
为什么委派构造函数在模板的情况下不起作用?在T=U 的情况下,复制构造函数不会调用常量复制构造函数,尽管没有这个template <typename U> 和<U> 也可以。
template <typename T>
struct Class {
Class () {
std::cout << "Default constructor" << std::endl;
}
template <typename U>
Class (const Class<U>& rhs) {
std::cout << "Const copy constructor" << std::endl;
}
template <typename U>
Class (Class<U>& rhs)
: Class (const_cast<const Class<U>&> (rhs))
{
std::cout << "Copy constructor (templated)" << std::endl;
}
/* // DOES NOT WORK WITHOUT THE NEXT:
Class (Class& rhs)
: Class (const_cast<const Class&> (rhs))
{
std::cout << "Copy constructor (not templated)" << std::endl;
}
*/
};
【问题讨论】:
-
@AntonSavin,是的,但不是 T=U。
-
@DieterLücking,即使没有
template <typename U>?
标签: c++ templates delegates copy-constructor