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