2017-10-29 18:31:41 +02:00
|
|
|
// Copyright 2017 Peter Dimov
|
2019-11-17 17:05:37 +01:00
|
|
|
// Copyright 2017 Vinnie Falco
|
2018-10-29 21:47:09 +01:00
|
|
|
// Copyright 2018 Andrzej Krzemienski
|
2017-10-29 18:31:41 +02:00
|
|
|
//
|
|
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
|
|
//
|
|
|
|
// http://www.boost.org/LICENSE_1_0.txt
|
|
|
|
|
|
|
|
#include <boost/config.hpp>
|
|
|
|
|
|
|
|
#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
#include <boost/optional.hpp>
|
2017-10-29 20:07:35 +02:00
|
|
|
#include <utility>
|
2017-10-29 18:31:41 +02:00
|
|
|
|
2017-10-29 20:07:35 +02:00
|
|
|
class basic_multi_buffer;
|
|
|
|
|
2018-10-29 21:47:09 +01:00
|
|
|
class const_buffers_type // a similar declaration in boost.beast had problem
|
2022-11-01 21:46:31 -04:00
|
|
|
{ // with boost optional
|
2017-10-29 20:07:35 +02:00
|
|
|
basic_multi_buffer const* b_;
|
2017-10-29 18:31:41 +02:00
|
|
|
|
2017-10-29 20:07:35 +02:00
|
|
|
friend class basic_multi_buffer;
|
2017-10-29 18:31:41 +02:00
|
|
|
|
2017-10-29 20:07:35 +02:00
|
|
|
explicit
|
|
|
|
const_buffers_type(basic_multi_buffer const& b);
|
|
|
|
|
|
|
|
public:
|
|
|
|
const_buffers_type() = delete;
|
|
|
|
const_buffers_type(const_buffers_type const&) = default;
|
|
|
|
const_buffers_type& operator=(const_buffers_type const&) = default;
|
2017-10-29 18:31:41 +02:00
|
|
|
};
|
|
|
|
|
2018-10-29 21:47:09 +01:00
|
|
|
void test_beast_example()
|
|
|
|
{
|
|
|
|
// test if it even compiles
|
|
|
|
boost::optional< std::pair<const_buffers_type, int> > opt, opt2;
|
|
|
|
opt = opt2;
|
|
|
|
(void)opt;
|
|
|
|
}
|
|
|
|
|
|
|
|
struct NotDefaultConstructible // minimal class exposing the problem
|
|
|
|
{
|
|
|
|
NotDefaultConstructible() = delete;
|
|
|
|
};
|
|
|
|
|
|
|
|
void test_assign_for_non_default_constructible()
|
|
|
|
{
|
|
|
|
// test if it even compiles
|
|
|
|
boost::optional<NotDefaultConstructible> opt, opt2;
|
|
|
|
opt = opt2;
|
|
|
|
(void)opt;
|
|
|
|
}
|
|
|
|
|
2017-10-29 18:31:41 +02:00
|
|
|
int main()
|
|
|
|
{
|
2018-10-29 21:47:09 +01:00
|
|
|
test_beast_example();
|
|
|
|
test_assign_for_non_default_constructible();
|
2017-10-29 18:31:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|