1/* Boost.Flyweight test of static data initialization facilities.
2 *
3 * Copyright 2006-2019 Joaquin M Lopez Munoz.
4 * Distributed under the Boost Software License, Version 1.0.
5 * (See accompanying file LICENSE_1_0.txt or copy at
6 * http://www.boost.org/LICENSE_1_0.txt)
7 *
8 * See http://www.boost.org/libs/flyweight for library home page.
9 */
10
11#include "test_init.hpp"
12
13#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
14#include <boost/detail/lightweight_test.hpp>
15#include <boost/flyweight.hpp>
16
17using namespace boost::flyweights;
18
19template<bool* pmark,typename Entry,typename Value>
20struct marked_hashed_factory_class:hashed_factory_class<Entry,Value>
21{
22 marked_hashed_factory_class(){*pmark=true;}
23};
24
25template<bool* pmark>
26struct marked_hashed_factory:factory_marker
27{
28 template<typename Entry,typename Value>
29 struct apply
30 {
31 typedef marked_hashed_factory_class<pmark,Entry,Value> type;
32 };
33};
34
35namespace boost_flyweight_test{
36
37bool mark1=false;
38bool init1=flyweight<int,marked_hashed_factory<&mark1> >::init();
39
40bool mark2=false;
41flyweight<int,marked_hashed_factory<&mark2> >::initializer init2;
42
43}
44
45void test_init()
46{
47 BOOST_TEST(boost_flyweight_test::mark1);
48 BOOST_TEST(boost_flyweight_test::mark2);
49}
50

source code of boost/libs/flyweight/test/test_init.cpp