diff options
Diffstat (limited to 'libcxx/test/utilities/utility/forward/move_only1.fail.cpp')
| -rw-r--r-- | libcxx/test/utilities/utility/forward/move_only1.fail.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libcxx/test/utilities/utility/forward/move_only1.fail.cpp b/libcxx/test/utilities/utility/forward/move_only1.fail.cpp new file mode 100644 index 00000000000..53559bc47b9 --- /dev/null +++ b/libcxx/test/utilities/utility/forward/move_only1.fail.cpp @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// test move + +#include <utility> +#include <cassert> + +#include <typeinfo> +#include <stdio.h> + +class move_only +{ +#ifdef _LIBCPP_MOVE + move_only(const move_only&); + move_only& operator=(const move_only&); +#else + move_only(move_only&); + move_only& operator=(move_only&); +#endif + +public: + +#ifdef _LIBCPP_MOVE + move_only(move_only&&) {} + move_only& operator=(move_only&&) {} +#else + operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} + move_only(std::__rv<move_only>) {} +#endif + + move_only() {} +}; + +move_only source() {return move_only();} +const move_only csource() {return move_only();} + +void test(move_only) {} + +int main() +{ + move_only a; + const move_only ca = move_only(); + + test(a); +} |

