pass_through_engine.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 99 行
HPP
99 行
/* boost random/detail/uniform_int_float.hpp header file * * Copyright Jens Maurer 2000-2001 * 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) * * See http://www.boost.org for most recent version including documentation. * * $Id: pass_through_engine.hpp 24096 2004-07-27 03:43:34Z dgregor $ * */#ifndef BOOST_RANDOM_DETAIL_PASS_THROUGH_ENGINE_HPP#define BOOST_RANDOM_DETAIL_PASS_THROUGH_ENGINE_HPP#include <boost/config.hpp>#include <boost/random/detail/ptr_helper.hpp>namespace boost {namespace random {namespace detail {template<class UniformRandomNumberGenerator>class pass_through_engine{private: typedef ptr_helper<UniformRandomNumberGenerator> helper_type;public: typedef typename helper_type::value_type base_type; typedef typename base_type::result_type result_type; explicit pass_through_engine(UniformRandomNumberGenerator rng) // make argument an rvalue to avoid matching Generator& constructor : _rng(static_cast<typename helper_type::rvalue_type>(rng)) { } result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (base().min)(); } result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (base().max)(); } base_type& base() { return helper_type::ref(_rng); } const base_type& base() const { return helper_type::ref(_rng); } result_type operator()() { return base()(); }private: UniformRandomNumberGenerator _rng;};#ifndef BOOST_NO_STD_LOCALEtemplate<class UniformRandomNumberGenerator, class CharT, class Traits>std::basic_ostream<CharT,Traits>&operator<<( std::basic_ostream<CharT,Traits>& os , const pass_through_engine<UniformRandomNumberGenerator>& ud ){ return os << ud.base();}template<class UniformRandomNumberGenerator, class CharT, class Traits>std::basic_istream<CharT,Traits>&operator>>( std::basic_istream<CharT,Traits>& is , const pass_through_engine<UniformRandomNumberGenerator>& ud ){ return is >> ud.base();}#else // no new streamstemplate<class UniformRandomNumberGenerator>inline std::ostream&operator<<(std::ostream& os, const pass_through_engine<UniformRandomNumberGenerator>& ud){ return os << ud.base();}template<class UniformRandomNumberGenerator>inline std::istream&operator>>(std::istream& is, const pass_through_engine<UniformRandomNumberGenerator>& ud){ return is >> ud.base();}#endif} // namespace detail} // namespace random} // namespace boost#endif // BOOST_RANDOM_DETAIL_PASS_THROUGH_ENGINE_HPP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?