forked from boostorg/system
Add result<U&, E> specialization. Fixes #72.
This commit is contained in:
@@ -145,6 +145,8 @@ int main()
|
||||
|
||||
BOOST_TEST_EQ( X::instances, 0 );
|
||||
|
||||
//
|
||||
|
||||
{
|
||||
result<void> r;
|
||||
result<void> r2( r );
|
||||
@@ -177,5 +179,121 @@ int main()
|
||||
BOOST_TEST_EQ( r, r2 );
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
{
|
||||
int x1 = 1;
|
||||
|
||||
result<int&> r1( x1 );
|
||||
result<int&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
}
|
||||
|
||||
{
|
||||
int x1 = 1;
|
||||
|
||||
result<int&> const r1( x1 );
|
||||
result<int&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
}
|
||||
|
||||
{
|
||||
int const x1 = 1;
|
||||
|
||||
result<int const&> r1( x1 );
|
||||
result<int const&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
}
|
||||
|
||||
{
|
||||
int const x1 = 1;
|
||||
|
||||
result<int const&> const r1( x1 );
|
||||
result<int const&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
}
|
||||
|
||||
BOOST_TEST_EQ( X::instances, 0 );
|
||||
|
||||
{
|
||||
X x1( 1 );
|
||||
|
||||
result<X&> r1( x1 );
|
||||
result<X&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
BOOST_TEST_EQ( X::instances, 1 );
|
||||
}
|
||||
|
||||
BOOST_TEST_EQ( X::instances, 0 );
|
||||
|
||||
{
|
||||
X x1( 1 );
|
||||
|
||||
result<X&> const r1( x1 );
|
||||
result<X&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
BOOST_TEST_EQ( X::instances, 1 );
|
||||
}
|
||||
|
||||
BOOST_TEST_EQ( X::instances, 0 );
|
||||
|
||||
{
|
||||
X const x1( 1 );
|
||||
|
||||
result<X const&> r1( x1 );
|
||||
result<X const&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
BOOST_TEST_EQ( X::instances, 1 );
|
||||
}
|
||||
|
||||
BOOST_TEST_EQ( X::instances, 0 );
|
||||
|
||||
{
|
||||
X const x1( 1 );
|
||||
|
||||
result<X const&> const r1( x1 );
|
||||
result<X const&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
BOOST_TEST_EQ( &*r2, &x1 );
|
||||
BOOST_TEST_EQ( X::instances, 1 );
|
||||
}
|
||||
|
||||
BOOST_TEST_EQ( X::instances, 0 );
|
||||
|
||||
{
|
||||
auto ec = make_error_code( errc::invalid_argument );
|
||||
|
||||
result<int&> r1( ec );
|
||||
result<int&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
}
|
||||
|
||||
{
|
||||
auto ec = make_error_code( errc::invalid_argument );
|
||||
|
||||
result<int&> const r1( ec );
|
||||
result<int&> r2( r1 );
|
||||
|
||||
BOOST_TEST_EQ( r1, r2 );
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user