mirror of
https://github.com/boostorg/optional.git
synced 2025-07-29 12:07:21 +02:00
Fixed Trac #10839
This commit is contained in:
@ -28,6 +28,7 @@ import testing ;
|
||||
[ run optional_test_ref_convert_assign_mutable_int.cpp ]
|
||||
[ run optional_test_ref_convert_assign_const_int.cpp ]
|
||||
[ run optional_test_ref_portable_minimum.cpp ]
|
||||
[ run optional_test_ref_move.cpp ]
|
||||
[ run optional_test_inplace_factory.cpp ]
|
||||
[ run optional_test_io.cpp ]
|
||||
[ run optional_test_move.cpp ]
|
||||
|
@ -9,7 +9,6 @@
|
||||
// You are welcome to contact the author at:
|
||||
// akrzemi1@gmail.com
|
||||
|
||||
#include <iostream>
|
||||
#include "boost/optional.hpp"
|
||||
|
||||
// THIS TEST SHOULD FAIL TO COMPILE
|
||||
|
69
test/optional_test_ref_move.cpp
Normal file
69
test/optional_test_ref_move.cpp
Normal file
@ -0,0 +1,69 @@
|
||||
// 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/optional.hpp"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include "boost/core/addressof.hpp"
|
||||
#include "boost/core/lightweight_test.hpp"
|
||||
|
||||
using boost::optional;
|
||||
|
||||
std::string global("text");
|
||||
|
||||
optional<std::string&> make_optional_string_ref()
|
||||
{
|
||||
return optional<std::string&>(global);
|
||||
}
|
||||
|
||||
std::string& return_global()
|
||||
{
|
||||
return global;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
optional<std::string&> opt;
|
||||
opt = make_optional_string_ref();
|
||||
BOOST_TEST(bool(opt));
|
||||
BOOST_TEST(*opt == global);
|
||||
BOOST_TEST(boost::addressof(*opt) == boost::addressof(global));
|
||||
|
||||
{
|
||||
std::string& str = *make_optional_string_ref();
|
||||
BOOST_TEST(str == global);
|
||||
BOOST_TEST(boost::addressof(str) == boost::addressof(global));
|
||||
}
|
||||
|
||||
{
|
||||
std::string& str = make_optional_string_ref().value();
|
||||
BOOST_TEST(str == global);
|
||||
BOOST_TEST(boost::addressof(str) == boost::addressof(global));
|
||||
}
|
||||
|
||||
{
|
||||
std::string& str = make_optional_string_ref().value_or(global);
|
||||
BOOST_TEST(str == global);
|
||||
BOOST_TEST(boost::addressof(str) == boost::addressof(global));
|
||||
}
|
||||
|
||||
{
|
||||
std::string& str = make_optional_string_ref().value_or_eval(&return_global);
|
||||
BOOST_TEST(str == global);
|
||||
BOOST_TEST(boost::addressof(str) == boost::addressof(global));
|
||||
}
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
Reference in New Issue
Block a user