jeudi 1 juin 2017

Is the move constructor called after invoking a conversion function?

Consider this example:

struct T { };

struct S {
    operator T();
};

S s;
T t = s;

[dcl.init] will take us to [over.match.copy] which will find the conversion function operator T(). But are we done at that point, or do we have to invoke T(T&& rhs), binding rhs to the return of operator T() via [dcl.init.ref]? Are there any differences with regards to the answer to this question between C++11 and C++1z?

Aucun commentaire:

Enregistrer un commentaire