You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Wes McKinney (Jira)" <ji...@apache.org> on 2021/02/17 00:04:00 UTC
[jira] [Created] (ARROW-11661) [C++] Compilation failure in
arrow/scalar.cc on Xcode 8.3.3
Wes McKinney created ARROW-11661:
------------------------------------
Summary: [C++] Compilation failure in arrow/scalar.cc on Xcode 8.3.3
Key: ARROW-11661
URL: https://issues.apache.org/jira/browse/ARROW-11661
Project: Apache Arrow
Issue Type: Bug
Components: C++
Reporter: Wes McKinney
See https://gist.github.com/wesm/e3b52381de1556f2af669c7e2458afd0
It seems that this template construct is not supported so robustly across older compilers:
{code}
// timestamp to string
Status CastImpl(const TimestampScalar& from, StringScalar* to) {
to->value = FormatToBuffer(internal::StringFormatter<Int64Type>{}, from);
return Status::OK();
}
// date to string
template <typename D>
Status CastImpl(const DateScalar<D>& from, StringScalar* to) {
TimestampScalar ts({}, timestamp(TimeUnit::MILLI));
RETURN_NOT_OK(CastImpl(from, &ts));
return CastImpl(ts, to);
}
// string to any
template <typename ScalarType>
Status CastImpl(const StringScalar& from, ScalarType* to) {
ARROW_ASSIGN_OR_RAISE(auto out,
Scalar::Parse(to->type, util::string_view(*from.value)));
to->value = std::move(checked_cast<ScalarType&>(*out).value);
return Status::OK();
}
// binary to string
Status CastImpl(const BinaryScalar& from, StringScalar* to) {
to->value = from.value;
return Status::OK();
}
// formattable to string
template <typename ScalarType, typename T = typename ScalarType::TypeClass,
typename Formatter = internal::StringFormatter<T>,
// note: Value unused but necessary to trigger SFINAE if Formatter is
// undefined
typename Value = typename Formatter::value_type>
Status CastImpl(const ScalarType& from, StringScalar* to) {
to->value = FormatToBuffer(Formatter{from.type}, from);
return Status::OK();
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)