1/*=============================================================================
2 Copyright (c) 2017 Paul Fultz II
3 static_def2.cpp
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6==============================================================================*/
7
8#include <cstdio>
9#include "static_def.hpp"
10
11extern void* f_sum_lambda_addr();
12extern void* f_sum_fo_addr();
13
14extern void* sum_lambda_addr();
15extern void* sum_fo_addr();
16
17extern void* f_sum_var_addr();
18extern void* f_sum_constexpr_fo_addr();
19
20extern void* sum_var_addr();
21extern void* sum_constexpr_fo_addr();
22
23void* f_sum_lambda_addr()
24{
25 return (void*)&fit_test::fit_sum_lambda;
26}
27void* f_sum_fo_addr()
28{
29 return (void*)&fit_test::fit_sum_fo;
30}
31
32void* f_sum_var_addr()
33{
34 return (void*)&fit_test::fit_sum_var;
35}
36void* f_sum_constexpr_fo_addr()
37{
38 return (void*)&fit_test::fit_sum_constexpr_fo;
39}
40
41int f()
42{
43 if (fit_test::fit_sum_fo(1, 2) != 3) printf(format: "FAILED\n");
44 if (fit_test::fit_sum_lambda(1, 2) != 3) printf(format: "FAILED\n");
45 if (fit_test::fit_sum(x: 1, y: 2) != 3) printf(format: "FAILED\n");
46
47#if BOOST_HOF_HAS_UNIQUE_STATIC_LAMBDA_FUNCTION_ADDR
48 if (sum_lambda_addr() != f_sum_lambda_addr()) printf(format: "FAILED: Lambda\n");
49 if (sum_fo_addr() != f_sum_fo_addr()) printf(format: "FAILED: Function object\n");
50#endif
51
52#if BOOST_HOF_HAS_UNIQUE_STATIC_VAR
53 if (sum_var_addr() != f_sum_var_addr()) printf(format: "FAILED: Lambda\n");
54 if (sum_constexpr_fo_addr() != f_sum_constexpr_fo_addr()) printf(format: "FAILED: Function object\n");
55#endif
56 return 0;
57}
58
59

source code of boost/libs/hof/test/static_def/static_def2.cpp