2013-06-04 2 views
2

Почему все операторы перегружены на this page ссылаются на std::vector, но не const ссылки? Они не изменяют векторы, так почему бы не const?std :: векторные перегрузки оператора не принимают постоянных параметров?

+2

Они принимают 'const' ссылки, C++ 11 §23.3.6.1. Эта страница просто неверна. – Jon

+2

FYI Я исправил страницу, спасибо, что указал на эту несогласованность. – juanchopanza

ответ

2

Согласно this page, они do принимают ссылки const в качестве аргументов. В соответствии с §   23.3.6.1 стандарта C++   11 и §   23.2.4 стандарта C++   03 они также работают.

+1

Спасибо, члены на SO часто предлагают остаться в стороне от cplusplus.com, но в этом случае у него есть более точная информация. – johnbakers

+1

@Fellowshee правильный. К счастью, 'cppreference.com' является вики, и ошибки обычно быстро исправляются. – juanchopanza

+0

@Fellowshee там, исправленный. – juanchopanza

5

Это выглядит как был недосмотр на этой странице. Из раздела Обзора векторного шаблона 23.3.6.1 класса в C++ 11 стандарта все они принимают const& S:

template <class T, class Allocator> 
bool operator==(const vector<T,Allocator>& x, 
       const vector<T,Allocator>& y); 

template <class T, class Allocator> 
bool operator< (const vector<T,Allocator>& x, 
       const vector<T,Allocator>& y); 

template <class T, class Allocator> 
bool operator!=(const vector<T,Allocator>& x, 
       const vector<T,Allocator>& y); 

template <class T, class Allocator> 
bool operator> (const vector<T,Allocator>& x, 
       const vector<T,Allocator>& y); 

template <class T, class Allocator> 
bool operator>=(const vector<T,Allocator>& x, 
       const vector<T,Allocator>& y); 

template <class T, class Allocator> 
bool operator<=(const vector<T,Allocator>& x, 
       const vector<T,Allocator>& y); 
Смежные вопросы