123456789101112131415161718192021222324252627282930313233343536 |
- // Copyright (C) 2014, Andrzej Krzemienski.
- //
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- //
- // See http://www.boost.org/lib/optional for documentation.
- //
- // You are welcome to contact the author at:
- // akrzemi1@gmail.com
- //
- #include "boost/optional.hpp"
- class MoveOnly
- {
- public:
- int val;
- MoveOnly(int v) : val(v) {}
- MoveOnly(MoveOnly&& rhs) : val(rhs.val) { rhs.val = 0; }
- void operator=(MoveOnly&& rhs) {val = rhs.val; rhs.val = 0; }
-
- private:
- MoveOnly(MoveOnly const&);
- void operator=(MoveOnly const&);
- };
- //
- // THIS TEST SHOULD FAIL TO COMPILE
- //
- void test_copying_optional_with_noncopyable_T()
- {
- boost::optional<MoveOnly> opt1 ;
- boost::optional<MoveOnly> opt2(opt1) ;
- }
|