diff --git a/cpp/src/arrow/array/diff.cc b/cpp/src/arrow/array/diff.cc index bcc065c69b4..16f4f9c7638 100644 --- a/cpp/src/arrow/array/diff.cc +++ b/cpp/src/arrow/array/diff.cc @@ -639,42 +639,44 @@ class MakeFormatterImpl { auto fmt = fmt_str.c_str(); auto unit = checked_cast(*array.type()).unit(); auto value = checked_cast&>(array).Value(index); - using arrow_vendored::date::format; + // Using unqualified `format` directly would produce ambiguous + // lookup because of `std::format` (ARROW-15520). + namespace avd = arrow_vendored::date; using std::chrono::nanoseconds; using std::chrono::microseconds; using std::chrono::milliseconds; using std::chrono::seconds; if (AddEpoch) { - static arrow_vendored::date::sys_days epoch{arrow_vendored::date::jan / 1 / 1970}; + static avd::sys_days epoch{avd::jan / 1 / 1970}; switch (unit) { case TimeUnit::NANO: - *os << format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; case TimeUnit::MICRO: - *os << format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; case TimeUnit::MILLI: - *os << format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; case TimeUnit::SECOND: - *os << format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; } return; } switch (unit) { case TimeUnit::NANO: - *os << format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; case TimeUnit::MICRO: - *os << format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; case TimeUnit::MILLI: - *os << format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; case TimeUnit::SECOND: - *os << format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; } };