[libcxx-commits] [PATCH] D110216: [clang] retain type sugar in auto / template argument deduction
Hans Wennborg via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Nov 17 05:12:24 PST 2021
hans added a comment.
> I am not sure how to reproduce this.
Attaching preprocessed source. With Clang built at 508aa4fe0c82b3b409e2e194d591ee6d665c8623 it reproduces for me like this:
$ clang++ -c /tmp/a.ii
../../base/containers/span_unittest.cc:11:13: error: no viable conversion from 'span<T, [...]>' to 'span<int, [...]>'
span<int> s = make_span(v);
^ ~~~~~~~~~~~~
../../base/containers/span.h:340:13: note: candidate constructor not viable: no known conversion from 'span<T, Extent::value>' (aka 'span<const int, Extent::value>') to 'const base::span<int, 18446744073709551615> &' for 1st argument
constexpr span(const span& other) noexcept = default;
^
../../base/containers/span.h:303:13: note: candidate template ignored: could not match 'int[N]' against 'span<T, Extent::value>' (aka 'span<const int, Extent::value>')
constexpr span(T (&array)[N]) noexcept : span(base::data(array), N) {}
^
../../base/containers/span.h:310:13: note: candidate template ignored: could not match 'array' against 'span'
constexpr span(std::array<U, N>& array) noexcept
^
../../base/containers/span.h:317:13: note: candidate template ignored: could not match 'array' against 'span'
constexpr span(const std::array<U, N>& array) noexcept
^
../../base/containers/span.h:328:13: note: candidate template ignored: requirement 'conjunction<base::negation<base::internal::IsSpanImpl<base::span<const int, 18446744073709551615>>>, base::negation<base::internal::IsStdArrayImpl<base::span<const int, 18446744073709551615>>>, base::negation<std::is_array<base::span<const int, 18446744073709551615>>>, std::is_convertible<const int (*)[], int (*)[]>, std::is_integral<unsigned long>>::value' was not satisfied [with Container = base::span<const int, 18446744073709551615>]
constexpr span(Container& container) noexcept{F20424748}
^
../../base/containers/span.h:337:13: note: candidate template ignored: requirement 'conjunction<base::negation<base::internal::IsSpanImpl<base::span<const int, 18446744073709551615>>>, base::negation<base::internal::IsStdArrayImpl<base::span<const int, 18446744073709551615>>>, base::negation<std::is_array<const base::span<const int, 18446744073709551615>>>, std::is_convertible<const int (*)[], int (*)[]>, std::is_integral<unsigned long>>::value' was not satisfied [with Container = base::span<const int, 18446744073709551615>]
constexpr span(const Container& container) noexcept
^
../../base/containers/span.h:350:13: note: candidate template ignored: requirement 'is_convertible<const int (*)[], int (*)[]>::value' was not satisfied [with U = const int, OtherExtent = 18446744073709551615]
constexpr span(const span<U, OtherExtent>& other)
^
1 error generated.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110216/new/
https://reviews.llvm.org/D110216
More information about the libcxx-commits
mailing list