在 range-v3 中,view_facade
类具有begin()
功能。
template<typename D = Derived, CONCEPT_REQUIRES_(Same<D, Derived>())>
detail::facade_iterator_t<D> begin()
{
return {range_access::begin_cursor(derived(), 42)};
}
并且range_access::begin_cursor()
是这样实现的,
template<typename Rng>
static RANGES_CXX14_CONSTEXPR auto begin_cursor(Rng & rng, long) // --1
RANGES_DECLTYPE_AUTO_RETURN
(
rng.begin_cursor()
)
template<typename Rng>
static RANGES_CXX14_CONSTEXPR auto begin_cursor(Rng & rng, int) // --2
RANGES_DECLTYPE_AUTO_RETURN
(
static_cast<Rng const &>(rng).begin_cursor()
)
在我的 VS 中,看起来总是调用第二个函数。
我想知道何时将幻数(42)转换为long
调用第一个函数。