normalized_argument_types.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 86 行

CPP
86
字号
// 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)#include <boost/parameter.hpp>#include <boost/mpl/assert.hpp>#include <boost/type_traits/is_same.hpp>#include <cassert>struct count_instances{    count_instances()    {        ++count;    }    count_instances(count_instances const&)    {        ++count;    }    template <class T>    count_instances(T const&)    {        ++count;    }    ~count_instances()    {        --count;    }    static std::size_t count;};std::size_t count_instances::count = 0;BOOST_PARAMETER_NAME(x)BOOST_PARAMETER_NAME(y)BOOST_PARAMETER_FUNCTION((int), f, tag,    (required       (x, (int))       (y, (int))    )){    BOOST_MPL_ASSERT((boost::is_same<x_type,int>));    BOOST_MPL_ASSERT((boost::is_same<y_type,int>));    return 0;}BOOST_PARAMETER_FUNCTION((int), g, tag,    (required       (x, (count_instances))    )){    BOOST_MPL_ASSERT((boost::is_same<x_type,count_instances>));    assert(count_instances::count > 0);    return 0;}BOOST_PARAMETER_FUNCTION((int), h, tag,    (required       (x, (count_instances const&))    )){    BOOST_MPL_ASSERT((boost::is_same<x_type,count_instances const>));    assert(count_instances::count == 1);    return 0;}int main(){    f(1, 2);    f(1., 2.f);    f(1U, 2L);    g(0);    h(0);}

⌨️ 快捷键说明

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