【发布时间】:2020-10-17 21:55:05
【问题描述】:
假设我们定义了一个类template<typename T> class vector,它的行为类似于std::vector,只是我们能够改变它的类定义。
还假设我们有一个函数f(const vector<T>&)。
我们如何启用隐式转换,允许我们将vector<const T>& 传递到f?
我认为这种隐式转换是明智的,因为我相信const vector<T>& 施加的限制是vector<const T>& 施加的限制的超集。但任何可能具有启发性的指导都将不胜感激。
【问题讨论】:
-
我假设您也希望相反的转换起作用?
-
@HolyBlackCat 不,因为
vector可以通过比覆盖/修改单个元素更多的方式进行修改。所以我认为const vector<T>比vector<const T>更受限制。 -
std::vector<const T>是一个非常有限的类型。在 C++11 之前它是格式错误的,之后就不能添加元素了
标签: c++ type-conversion c++14 constants implicit-conversion