class Foo { | |
Foo(Foo&& f); | |
}; | |
class Bar { | |
explicit Bar(Bar&& f); // expected-error {{Move constructors may not be marked explicit}} | |
}; | |
class Baz { | |
template<typename T> | |
explicit Baz(T&& f) {}; | |
}; | |
class Quxx { | |
Quxx(); | |
Quxx(Quxx& q) = delete; | |
template<typename T> | |
explicit Quxx(T&& f) {}; | |
}; | |
void f() { | |
// Move a quxx into a quxx! (This speciailizes Quxx's constructor to look like | |
// a move constructor - to make sure it doesn't trigger) | |
Quxx(Quxx()); | |
} |