【发布时间】:2013-01-23 18:22:38
【问题描述】:
对于算术类型T,可以有一个包含转换运算符的类:
template <typename T>
class Value
{
constexpr operator T() const;
};
这个operator 是否适用于所有类型(例如,它是否适用于T = std::vector<double>?)如果不是,它适用于哪些类型?
【问题讨论】:
-
您是否尝试过
T的不同值?结果如何? -
请注意,转换运算符仅定义为 与您的类实例相同的 T。例如,
Value<int>具有int的转换运算符,仅此而已。 -
我认为它应该适用于任何
T,也许在某些情况下您根本无法期望执行隐式转换(例如,缩小初始化列表中的转换),但那是不是因为目标类型本身的任何特殊性。所以总而言之,我很想回答“是”,但我心中那 1% 的怀疑阻止了我这样做。哦,std::inizialier_list<X>可能不是合格的T
标签: c++ casting c++11 operator-overloading operator-keyword