tenfourfox/build/clang-plugin/tests/TestNoExplicitMoveConstructor.cpp

26 lines
477 B
C++
Raw Normal View History

2017-04-19 07:56:45 +00:00
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());
}