Why std::vector\'s operator[], front and back member functions are not specified as noexcept?
In short, there are functions specified with or without noexcept. It is intended, because they are different. The principle is: a function with undefined behavior specified (e.g. due to improper arguments) should not be with noexcept.
This paper explicitly specified these members being without noexcept. Some members of vector were used as examples:
Examples of functions having wide contracts would be
vectorand::begin() vector. Examples of functions not having a wide contract would be::at(size_type) vectorand::front() vector.::operator[](size_type)
See this paper for initial motivation and detailed discussion. The most obvious realistic problem here is testability.