Consider the following classes foo1 and foo2
template <typename T>
struct foo1
{
T t_;
foo1(T&& t) :
t_{ std::move(t) }
{
}
};
template <typename T>
struct foo2
{
foo1<T> t_;
foo2(T&& t) :
t_{ std::forward<T>(t) }
{
}
};
Is it always the case that the constructor of foo1 represents the correct way to handle assigning the universal reference T&& to the member variable T? i.e. by using std::move.
Is it always the case that the constructor of foo2 represents the correct way to handle assigning the universal reference T&& to the member variable foo1<T> due to needing to forward to foo1's constructor? i.e. by using std::forward.
Aucun commentaire:
Enregistrer un commentaire