namespace hoge
{
template<typename T> inline auto distance(T first, T last)
{
return std::distance(first, last);
}
template<typename T> inline auto distance(const T* first, const T* last)
{
return std::distance(first, last);
}
template<typename InIt> inline auto hage(InIt first, InIt last)
{
return distance(first, last);
}
}
const auto a = std::string("abcde");
hoge::hage(std::cbegin(a), std::cend(s));
のようにすると
error: call of overloaded 'distance
とか言われます。何故ですか
hageのdistanceをhoge::distanceにするとビルド通ります。