在:
C:\ Program Files \ mingw-w64 \ x86_64-6.3.0-posix-seh-rt_v5-rev1 \ mingw64 \ lib \ gcc \ x86_64-w64-mingw32 \ 6.3.0 \ include \ c ++ \ bits \ range_access .H
有以下std :: begin的实现,有两个函数:
/**
* @brief Return an iterator pointing to the first element of
* the container.
* @param __cont Container.
*/
template<typename _Container>
inline auto
begin(_Container& __cont) -> decltype(__cont.begin())
{ return __cont.begin(); }
/**
* @brief Return an iterator pointing to the first element of
* the const container.
* @param __cont Container.
*/
template<typename _Container>
inline auto
begin(const _Container& __cont) -> decltype(__cont.begin())
{ return __cont.begin(); }
我的问题是为什么实际需要第二次重载?
这是我用来查找是否遗漏了一些测试代码: http://coliru.stacked-crooked.com/a/148278372ff8da3b