move_only3.fail.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
1//===----------------------------------------------------------------------===//
2//
3// ��������������������The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// test move
11
12#include <utility>
13#include <cassert>
14
15class move_only
16{
17#ifdef _LIBCPP_MOVE
18    move_only(const move_only&);
19    move_only& operator=(const move_only&);
20#else
21    move_only(move_only&);
22    move_only& operator=(move_only&);
23#endif
24
25public:
26
27#ifdef _LIBCPP_MOVE
28    move_only(move_only&&) {}
29    move_only& operator=(move_only&&) {}
30#else
31    operator std::__rv<move_only> () {return std::__rv<move_only>(*this);}
32    move_only(std::__rv<move_only>) {}
33#endif
34
35    move_only() {}
36};
37
38move_only source() {return move_only();}
39const move_only csource() {return move_only();}
40
41void test(move_only) {}
42
43int main()
44{
45    move_only a;
46    const move_only ca = move_only();
47
48    test(std::move(ca));
49}
50