1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
// 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 BOOST_BORLANDC
#pragma hdrstop
#endif
#include "boost/core/lightweight_test.hpp"
#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
int main()
{
}
#else
#include <utility>
struct NotDefaultConstructible
{
NotDefaultConstructible() = delete;
};
void test_tc_base()
{
boost::optional<NotDefaultConstructible> o;
BOOST_TEST(boost::none == o);
}
struct S
{
};
template<class T>
struct W
{
T& t_;
template<class... Args>
W(Args&&... args)
: t_(std::forward<Args>(args)...)
{
}
};
void test_value_init()
{
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
{
S s;
W<S> w{s};
}
#endif
{
S s;
W<S> w(s);
}
}
void test_optional_reference_wrapper()
{
boost::optional<W<S&> > o;
BOOST_TEST(boost::none == o);
}
int main()
{
test_tc_base();
test_value_init();
test_optional_reference_wrapper();
return boost::report_errors();
}
#endif
|