【发布时间】:2019-04-12 16:45:05
【问题描述】:
假设有一个模板类template <class T> myclass;。
有没有一种惯用的方法可以将非常量 T 的对象转换为 const T 的对象?
基本上,我希望隐式发生以下转换:
void f(myclass<const int> x);
myclass<int> a;
f(a); // should compile
重要编辑:
看起来答案很琐碎(而且这个问题很愚蠢),但其中涉及到一些非常概念性的东西(至少对我而言)。
我的印象是我需要有条件地启用转换运算符,因为从 myclass<const T> 到 myclass<const T> 的转换运算符没有任何意义,即当且仅当 @987654327 时我才需要声明转换运算符@ 是 const 合格。我期待编译器抱怨冗余转换运算符。
既然编译器对将类型X 转换为X 的标识转换运算符感到满意,那么赋值运算符或复制构造函数与标识转换运算符有什么区别?
MSVC 为身份转换运算符引发警告。这不是很好。
【问题讨论】:
标签: c++ type-conversion operator-overloading idioms