📄 any.hpp
字号:
///////////////////////////////////////////////////////////////////////////////// any.hpp//// Copyright 2008 Eric Niebler. Distributed under 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_XPRESSIVE_DETAIL_UTILITY_ANY_HPP_EAN_11_19_2005#define BOOST_XPRESSIVE_DETAIL_UTILITY_ANY_HPP_EAN_11_19_2005#include <boost/version.hpp>#if BOOST_VERSION >= 103300// In Boost 1.33+, we have a cons list in Fusion, so just include it.# if BOOST_VERSION >= 103500# include <boost/fusion/include/any.hpp> // Boost 1.35+ has Fusion2# else# include <boost/spirit/fusion/algorithm/any.hpp> // Fusion1# endif#else# include <boost/spirit/fusion/sequence/begin.hpp># include <boost/spirit/fusion/sequence/end.hpp># include <boost/spirit/fusion/iterator/equal_to.hpp># include <boost/mpl/bool.hpp># include <boost/spirit/fusion/iterator/equal_to.hpp># include <boost/spirit/fusion/iterator/next.hpp># include <boost/spirit/fusion/iterator/deref.hpp>namespace boost { namespace fusion{ namespace detail { template <typename First, typename Last, typename F> inline bool any(First const&, Last const&, F const&, mpl::true_) { return false; } template <typename First, typename Last, typename F> inline bool any(First const& first, Last const& last, F const& f, mpl::false_) { if(f(*first)) return true; return detail::any(fusion::next(first), last, f , meta::equal_to<BOOST_DEDUCED_TYPENAME meta::next<First>::type, Last>()); } } namespace meta { template <typename Sequence, typename F> struct any { typedef bool type; }; } namespace function { struct any { template <typename Sequence, typename F> struct apply { typedef bool type; }; template <typename Sequence, typename F> inline bool operator()(Sequence const& seq, F const& f) const { return detail::any( fusion::begin(seq) , fusion::end(seq) , f , meta::equal_to< BOOST_DEDUCED_TYPENAME meta::begin<Sequence>::type , BOOST_DEDUCED_TYPENAME meta::end<Sequence>::type>()); } template <typename Sequence, typename F> inline bool operator()(Sequence& seq, F const& f) const { return detail::any( fusion::begin(seq) , fusion::end(seq) , f , meta::equal_to< BOOST_DEDUCED_TYPENAME meta::begin<Sequence>::type , BOOST_DEDUCED_TYPENAME meta::end<Sequence>::type>()); } }; } function::any const any = function::any();}}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -