考虑以下代码:
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 *&&',其中[_Ty = T *]。转换失去了限定符
我可以看到这种特定的转换是非法的,但我不认为我的代码在语义上有错。我也相信有一个'push_back(const T&)'变量,那么为什么它没有与我的调用匹配?