考虑一段代码:
class T;
void constructVector(const T* item)
{
std::vector<T*> v;
v.push_back(item);
}
MSVC 2010 编译器出现错误:
错误:C2664: 'void std::vector<_Ty>::push_back(_Ty &&)' : 无法将参数 1 从 'const T *' 转换为 'T *&&' with [ _Ty=T * ] 转换丢失限定符
我可以看到这种特定的转换是非法的,但我不相信我的代码在语义上是错误的。我也相信有push_back(const T&)
变体,为什么这与我的电话不匹配?