vendredi 26 février 2016

Forwarding references and template templates

Consider these two template functions:

template<typename T>
void foo(T&& bar) {
    // do stuff with bar, which may or may not be an instance of a templated class
}

template<typename U, template<typename> class T>
void foo(T<U>&& bar) {
    // do stuff with bar, which must be an instance of a templated class
}

Why does the former accept lvalues (by using a forwarding reference) while the latter does not?

Aucun commentaire:

Enregistrer un commentaire