]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Copyright (c) 2007 Tobias Schwinger | |
3 | ||
4 | Use modification and distribution are subject to the Boost Software | |
5 | License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
6 | http://www.boost.org/LICENSE_1_0.txt). | |
7 | ==============================================================================*/ | |
8 | ||
9 | #include <boost/functional/factory.hpp> | |
10 | #include <boost/detail/lightweight_test.hpp> | |
11 | #include <boost/none_t.hpp> | |
12 | ||
13 | #include <memory> | |
14 | ||
15 | class sum | |
16 | { | |
17 | int val_sum; | |
18 | public: | |
19 | sum(int a, int b) : val_sum(a + b) { } | |
20 | ||
21 | operator int() const { return this->val_sum; } | |
22 | }; | |
23 | ||
b32b8144 FG |
24 | // Suppress warnings about std::auto_ptr. |
25 | #if defined(__clang__) | |
26 | #pragma clang diagnostic push | |
27 | #pragma clang diagnostic ignored "-Wdeprecated-declarations" | |
28 | #endif | |
29 | ||
7c673cae FG |
30 | int main() |
31 | { | |
32 | int one = 1, two = 2; | |
33 | { | |
34 | sum* instance( boost::factory< sum*, boost::none_t >()(one,two) ); | |
35 | BOOST_TEST(*instance == 3); | |
36 | } | |
b32b8144 | 37 | #if !defined(BOOST_NO_AUTO_PTR) |
7c673cae FG |
38 | { |
39 | std::auto_ptr<sum> instance( | |
40 | boost::factory< std::auto_ptr<sum>, boost::none_t >()(one,two) ); | |
41 | BOOST_TEST(*instance == 3); | |
42 | } | |
b32b8144 FG |
43 | #endif |
44 | #if !defined(BOOST_NO_CXX11_SMART_PTR) | |
45 | { | |
46 | std::unique_ptr<sum> instance( | |
47 | boost::factory< std::unique_ptr<sum>, boost::none_t >()(one,two) ); | |
48 | BOOST_TEST(*instance == 3); | |
49 | } | |
50 | #endif | |
7c673cae FG |
51 | return boost::report_errors(); |
52 | } | |
b32b8144 FG |
53 | |
54 | #if defined(__clang__) | |
55 | #pragma clang diagnostic pop | |
56 | #endif |