mizvekov added a comment.

In D110216#3137375 <https://reviews.llvm.org/D110216#3137375>, @hans wrote:

>> 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;
>               ^

Oh so that one was a curve ball!!!! `T` was not a template parameter, just a 
typedef, see the implementation of make_span in that preprocessed file:

  template <int&... ExplicitArgumentBarrier, typename Container>
  constexpr auto make_span(Container&& container) noexcept {
    using T =
        std::remove_pointer_t<decltype(base::data(std::declval<Container>()))>;
    using Extent = internal::Extent<Container>;
    return span<T, Extent::value>(std::forward<Container>(container));
  }

So, some notes:

- We should probably also do an AKA on the type diff.
- Chromium should use a clearer name for that typedef perhaps? Though calling 
the first template parameter of span as `T` is common, maybe a better name here 
would be `element_type`.

Having a convenient way to just name a type like that also seems useful, so 
maybe the rename coupled with the AKA would be an improvement overall?

Otherwise, if we get too much trouble with with legacy codebases which cannot 
be updated with that simple rename, we could perhaps make the type printer be 
context sensitive, and when printing type nodes tied to NamedDecls, just step 
over those that refer to a name which is not accessible in the current context?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110216

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to