在实现一个自定义的tuple
时(这里),我发现了一个奇怪的swap()
函数,它传入了const
参数(cppreference):
template< class... Types >
constexpr void swap( const std::tuple<Types...>& lhs,
const std::tuple<Types...>& rhs ) noexcept(/* see below */);
还有一个带有常量限定符的swap()
成员函数(参见Cppreference):
constexpr void swap( const tuple& other ) noexcept(/* see below */) const;
const
表示对象是只读的,但是要交换两个对象,必须修改对象,这违反了常量性。
那么,const swap() 函数的目的是什么?