📄 confix.hpp
字号:
// Copyright (c) 2001-2008 Hartmut Kaiser// // 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)#if !defined(BOOST_SPIRIT_SUPPORT_CONFIX_AUG_19_2008_1103AM)#define BOOST_SPIRIT_SUPPORT_CONFIX_AUG_19_2008_1103AM#include <boost/spirit/home/support/placeholders.hpp>///////////////////////////////////////////////////////////////////////////////namespace boost { namespace spirit { namespace tag{ // This is the tag returned by the confix() function template <typename Prefix, typename Suffix> struct confix_tag { Prefix prefix; Suffix suffix; };}}}///////////////////////////////////////////////////////////////////////////////namespace boost { namespace spirit { /////////////////////////////////////////////////////////////////////////// template <typename Prefix, typename Suffix = Prefix> struct confix_spec : proto::terminal<tag::confix_tag<Prefix, Suffix> >::type { private: typedef typename proto::terminal<tag::confix_tag<Prefix, Suffix> >::type base_type; base_type make_tag(Prefix const& prefix, Suffix const& suffix) const { base_type xpr = {{prefix, suffix}}; return xpr; } public: confix_spec(Prefix const& prefix, Suffix const& suffix) : base_type(make_tag(prefix, suffix)) {} }; namespace detail { struct confix_extractor { template <typename Prefix, typename Suffix> static Prefix const& prefix(tag::confix_tag<Prefix, Suffix> const& c) { return c.prefix; } template <typename Prefix, typename Suffix> static Suffix const& suffix(tag::confix_tag<Prefix, Suffix> const& c) { return c.suffix; } }; } /////////////////////////////////////////////////////////////////////////// // construct a confix component /////////////////////////////////////////////////////////////////////////// inline confix_spec<char const*> confix(char const* prefix, char const* suffix) { return confix_spec<char const*>(prefix, suffix); } inline confix_spec<wchar_t const*> confix(wchar_t const* prefix, wchar_t const* suffix) { return confix_spec<wchar_t const*>(prefix, suffix); } template <typename Prefix, typename Suffix> inline confix_spec<Prefix, Suffix> confix(Prefix const& prefix, Suffix const& suffix) { return confix_spec<Prefix, Suffix>(prefix, suffix); }}}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -