我想为std :: pair声明operator []函数, 所以我写下了这些代码:
template<typename T>
T& std::pair<T, T>::operator[](int x) {
if (x == 0)
return p.first;
return p.second;
}
但是我遇到了编译错误,所以有什么方法可以为std :: pair声明operator []函数吗?
答案 0 :(得分:3)
operator[]
不能作为非成员函数重载。而且由于不允许您更改std::pair<>
,因此无法使用first
通过索引访问对second
和operator[]
。