count.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 67 行

HPP
67
字号
// Copyright 2008 Daniel James.// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or move at http://www.boost.org/LICENSE_1_0.txt)#if !defined(BOOST_UNORDERED_TEST_HELPERS_COUNT_HEAD)#define BOOST_UNORDERED_TEST_HELPERS_COUNT_HEADnamespace test {    struct object_count {        int instances;        int constructions;        object_count() : instances(0), constructions(0) {}        void reset() { *this = object_count(); }        void construct() {            ++instances;            ++constructions;        }        void destruct() {            if(instances == 0) {                BOOST_ERROR("Unbalanced constructions.");            }            else {                --instances;            }        }        bool operator==(object_count const& x) const {            return instances == x.instances &&                constructions == x.constructions;        }        bool operator!=(object_count const& x) const {            return !(*this == x);        }    };    template <class T>    struct counted_object    {        static object_count count_;        counted_object() { count_.construct(); }        counted_object(counted_object const&) { count_.construct(); }        ~counted_object() { count_.destruct(); }    };    template <class T> object_count counted_object<T>::count_;    struct globally_counted_object        : counted_object<globally_counted_object> {};    // This won't be a problem as I'm only using a single compile unit    // in each test (this is actually require by the minimal test    // framework).    //     // boostinspect:nounnamed    namespace {        object_count& global_object_count = globally_counted_object::count_;    }}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?