move_only.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
182aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com//===----------------------------------------------------------------------===// 282aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com// 382aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com// The LLVM Compiler Infrastructure 482aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com// 582aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com// This file is dual licensed under the MIT and the University of Illinois Open 682aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com// Source Licenses. See LICENSE.TXT for details. 782aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com// 882aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com//===----------------------------------------------------------------------===// 982aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com 1082aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com// test move 118b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org 128b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#include <utility> 13c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org#include <cassert> 1482aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com 1582aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.comclass move_only 1603245700d6f1c5db903a2b9ea34e6cc0ce34a185bsalomon@google.com{ 1782aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 18b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt move_only(const move_only&); 1930ba436f04e61d4505fb854d5fc56079636e0788joshualitt move_only& operator=(const move_only&); 2082aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES 2182aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com move_only(move_only&); 22b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt move_only& operator=(move_only&); 2382aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES 2482aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com 2582aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.compublic: 2682aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com 2782aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 2882aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com move_only(move_only&&) {} 29b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt move_only& operator=(move_only&&) {} 30b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES 31b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt operator std::__rv<move_only> () {return std::__rv<move_only>(*this);} 32b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt move_only(std::__rv<move_only>) {} 33b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES 34b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt 35b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt move_only() {} 3655fad7af61c21d502acb9891d631e8aa29e3628cbsalomon}; 3755fad7af61c21d502acb9891d631e8aa29e3628cbsalomon 3855fad7af61c21d502acb9891d631e8aa29e3628cbsalomonmove_only source() {return move_only();} 3955fad7af61c21d502acb9891d631e8aa29e3628cbsalomonconst move_only csource() {return move_only();} 4055fad7af61c21d502acb9891d631e8aa29e3628cbsalomon 4155fad7af61c21d502acb9891d631e8aa29e3628cbsalomonvoid test(move_only) {} 4255fad7af61c21d502acb9891d631e8aa29e3628cbsalomon 430ac6af49975c54c2debf41e9200af416ecd2d973bsalomon@google.comint main() 4482aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com{ 4582aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com move_only mo; 4682aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com 4782aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com test(std::move(mo)); 4882aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com test(source()); 49b0a8a377f832c59cee939ad721e1f87d378b7142joshualitt} 5068b58c95384dd6c2fd389a5b4bbf8fc468819454bsalomon@google.com