deduced.hpp

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

HPP
78
字号
// Copyright Daniel Wallin 2006. Use, modification and distribution is// subject to the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#ifndef BOOST_DEDUCED_060920_HPP# define BOOST_DEDUCED_060920_HPP# include <boost/mpl/for_each.hpp># include "basics.hpp"struct not_present_tag {};not_present_tag not_present;template <class E, class ArgPack>struct assert_expected{    assert_expected(E const& e, ArgPack const& args)      : expected(e)      , args(args)    {}    template <class T>    bool check_not_present(T const&) const    {        BOOST_MPL_ASSERT((boost::is_same<T,not_present_tag>));        return true;    }    template <class K>    bool check1(K const& k, not_present_tag const&, long) const    {        return check_not_present(args[k | not_present]);    }    template <class K, class Expected>    bool check1(K const& k, Expected const& expected, int) const    {        return test::equal(args[k], expected);    }    template <class K>    void operator()(K) const    {        boost::parameter::keyword<K> const& k = boost::parameter::keyword<K>::get();        assert(check1(k, expected[k], 0L));    }    E const& expected;    ArgPack const& args;};template <class E, class ArgPack>void check0(E const& e, ArgPack const& args){    boost::mpl::for_each<E>(assert_expected<E,ArgPack>(e, args));}template <class P, class E, class A0>void check(E const& e, A0 const& a0){    check0(e, P()(a0));}template <class P, class E, class A0, class A1>void check(E const& e, A0 const& a0, A1 const& a1){    check0(e, P()(a0,a1));}template <class P, class E, class A0, class A1, class A2>void check(E const& e, A0 const& a0, A1 const& a1, A2 const& a2){    check0(e, P()(a0,a1,a2));}#endif // BOOST_DEDUCED_060920_HPP

⌨️ 快捷键说明

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