ccotter added a comment.

In

  template <int tagValue, typename T>
  struct SomeClass
  {
  public:
    explicit SomeClass(T&& value) : value(std::forward<T>(value)) {}
   T value;
  };

`T` is not a universal reference in the constructor, it's an rvalue reference 
to `T`. There is no deducing context, so universal references are not involved 
here (and, `std::forward` would also be incorrect here). The following would be 
a deducing context with a universal reference:

  template <int tagValue, typename T>
  struct SomeClass
  {
  public:
    template <class T2>
    explicit SomeClass(T2&& value) : value(std::forward<T2>(value)) {}
   T value;
  };


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D141569

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

Reply via email to