📄 apply_visitor_delayed.hpp
字号:
//-----------------------------------------------------------------------------// boost variant/detail/apply_visitor_delayed.hpp header file// See http://www.boost.org for updates, documentation, and revision history.//-----------------------------------------------------------------------------//// Copyright (c) 2002-2003// Eric Friedman//// 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_VARIANT_DETAIL_APPLY_VISITOR_DELAYED_HPP#define BOOST_VARIANT_DETAIL_APPLY_VISITOR_DELAYED_HPP#include "boost/variant/detail/generic_result_type.hpp"#include "boost/variant/detail/apply_visitor_unary.hpp"#include "boost/variant/detail/apply_visitor_binary.hpp"namespace boost {//////////////////////////////////////////////////////////////////////////// function template apply_visitor(visitor)//// Returns a function object, overloaded for unary and binary usage, that// visits its arguments using visitor (or a copy of visitor) via// * apply_visitor( visitor, [argument] )// under unary invocation, or// * apply_visitor( visitor, [argument1], [argument2] )// under binary invocation.//// NOTE: Unlike other apply_visitor forms, the visitor object must be// non-const; this prevents user from giving temporary, to disastrous// effect (i.e., returned function object would have dead reference).//template <typename Visitor>class apply_visitor_delayed_t{public: // visitor typedefs typedef typename Visitor::result_type result_type;private: // representation Visitor& visitor_;public: // structors explicit apply_visitor_delayed_t(Visitor& visitor) : visitor_(visitor) { }public: // unary visitor interface template <typename Visitable> BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type) operator()(Visitable& visitable) { return apply_visitor(visitor_, visitable); }public: // binary visitor interface template <typename Visitable1, typename Visitable2> BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type) operator()(Visitable1& visitable1, Visitable2& visitable2) { return apply_visitor(visitor_, visitable1, visitable2); }};template <typename Visitor>inline apply_visitor_delayed_t<Visitor> apply_visitor(Visitor& visitor){ return apply_visitor_delayed_t<Visitor>(visitor);}} // namespace boost#endif // BOOST_VARIANT_DETAIL_APPLY_VISITOR_DELAYED_HPP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -