| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // This test should pass in C++03 with Clang extensions because Clang does | |
| // not implicitly delete the copy constructor when move constructors are | |
| // defaulted using extensions. | |
| // XFAIL: c++98, c++03 | |
| // test move | |
| struct move_only { | |
| move_only() {} | |
| move_only(move_only&&) = default; | |
| move_only& operator=(move_only&&) = default; | |
| }; | |
| move_only source() {return move_only();} | |
| const move_only csource() {return move_only();} | |
| void test(move_only) {} | |
| int main(int, char**) | |
| { | |
| const move_only ca = move_only(); | |
| // expected-error@+1 {{call to implicitly-deleted copy constructor of 'move_only'}} | |
| test(std::move(ca)); | |
| return 0; | |
| } | |