• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 Copyright 2018 Glen Joseph Fernandes
3 (glenjofe@gmail.com)
4 
5 Distributed under the Boost Software License, Version 1.0.
6 (http://www.boost.org/LICENSE_1_0.txt)
7 */
8 #include <boost/core/empty_value.hpp>
9 #include <boost/core/lightweight_test.hpp>
10 
11 #if !defined(BOOST_NO_CXX11_FINAL)
12 class type final {
13 public:
type(int count)14     explicit type(int count)
15         : value_(count) { }
value() const16     int value() const {
17         return value_ + 1;
18     }
value()19     int value() {
20         return value_ + 2;
21     }
22 private:
23     int value_;
24 };
25 
26 struct empty final {
valueempty27     int value() const {
28         return 1;
29     }
valueempty30     int value() {
31         return 2;
32     }
33 };
34 
test_type()35 void test_type()
36 {
37     const boost::empty_value<type> v1(boost::empty_init_t(), 3);
38     BOOST_TEST(v1.get().value() == 4);
39     boost::empty_value<type> v2(boost::empty_init_t(), 3);
40     BOOST_TEST(v2.get().value() == 5);
41 }
42 
test_empty()43 void test_empty()
44 {
45     const boost::empty_value<empty> v1 = boost::empty_init_t();
46     BOOST_TEST(v1.get().value() == 1);
47     boost::empty_value<empty> v2;
48     BOOST_TEST(v2.get().value() == 2);
49 }
50 
main()51 int main()
52 {
53     test_type();
54     test_empty();
55     return boost::report_errors();
56 }
57 #else
main()58 int main()
59 {
60     return 0;
61 }
62 #endif
63