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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits