[libcxx-commits] [PATCH] D138307: [libc++] Remove default definition of std::char_traits

James Y Knight via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Wed Nov 23 08:32:02 PST 2022


jyknight added a comment.

This breaks Apache Arrow, which makes a basic_string_view<unsigned long>, here:
https://github.com/apache/arrow/blob/91ee6dad722ee154d63eea86ce5644e1e658b53b/cpp/src/arrow/util/bitmap.h#L53

  /usr/include/c++/v1/string_view:279:45: error: implicit instantiation of undefined template 'std::char_traits<unsigned long>'
      static_assert((is_same<_CharT, typename traits_type::char_type>::value),
                                              ^
  arrow/util/bitmap.h:153:16: note: in instantiation of template class 'std::basic_string_view<unsigned long>' requested here
      View<Word> words[N];
                 ^
  arrow/compute/kernels/scalar_if_else.cc:1595:15: note: in instantiation of function template specialization 'arrow::internal::Bitmap::VisitWords<3UL, (lambda at arrow/compute/kernels/scalar_if_else.cc:1595:35), unsigned long>' requested here
        Bitmap::VisitWords(bitmaps, [&](std::array<uint64_t, 3> words) {
                ^
  arrow/compute/kernels/scalar_if_else.cc:1652:14: note: in instantiation of function template specialization 'arrow::compute::internal::(anonymous namespace)::ExecArrayCaseWhen<arrow::BooleanType>' requested here
        return ExecArrayCaseWhen<Type>(ctx, batch, out);
               ^
  arrow/compute/kernels/codegen_internal.h:1173:47: note: in instantiation of member function 'arrow::compute::internal::(anonymous namespace)::CaseWhenFunctor<arrow::BooleanType>::Exec' requested here
        return Generator<BooleanType, Args...>::Exec;
                                                ^
  arrow/compute/kernels/scalar_if_else.cc:2738:17: note: in instantiation of function template specialization 'arrow::compute::internal::GenerateTypeAgnosticPrimitive<arrow::compute::internal::(anonymous namespace)::CaseWhenFunctor>' requested here
      auto exec = GenerateTypeAgnosticPrimitive<CaseWhenFunctor>(*type);
                  ^
  /usr/include/c++/v1/__string/char_traits.h:42:8: note: template is declared here
  struct char_traits;

Also breaks v8, which uses a std::basic_string<uint16_t> member, https://github.com/v8/v8/blob/0afe3f519821449f00c746df3747543d3458bb68/src/inspector/string-16.h#L113


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D138307/new/

https://reviews.llvm.org/D138307



More information about the libcxx-commits mailing list