complement.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 196 行

HPP
196
字号
//  (C) Copyright John Maddock 2006.//  (C) Copyright Paul A. Bristow 2006.//  Use, modification and distribution are 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)#ifndef BOOST_STATS_COMPLEMENT_HPP#define BOOST_STATS_COMPLEMENT_HPP//// This code really defines our own tuple type.// It would be nice to reuse std::tr1::tuple// while retaining our own type safety, but it's// not clear if that's possible.  In any case this// code is *very* lightweight.//namespace boost{ namespace math{template <class Dist, class RealType>struct complemented2_type{   complemented2_type(      const Dist& d,       const RealType& p1)      : dist(d),         param(p1) {}   const Dist& dist;   const RealType& param;private:   complemented2_type& operator=(const complemented2_type&);};template <class Dist, class RealType1, class RealType2>struct complemented3_type{   complemented3_type(      const Dist& d,       const RealType1& p1,      const RealType2& p2)      : dist(d),         param1(p1),         param2(p2) {}   const Dist& dist;   const RealType1& param1;   const RealType2& param2;private:   complemented3_type& operator=(const complemented3_type&);};template <class Dist, class RealType1, class RealType2, class RealType3>struct complemented4_type{   complemented4_type(      const Dist& d,       const RealType1& p1,      const RealType2& p2,      const RealType3& p3)      : dist(d),         param1(p1),         param2(p2),         param3(p3) {}   const Dist& dist;   const RealType1& param1;   const RealType2& param2;   const RealType3& param3;private:   complemented4_type& operator=(const complemented4_type&);};template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4>struct complemented5_type{   complemented5_type(      const Dist& d,       const RealType1& p1,      const RealType2& p2,      const RealType3& p3,      const RealType4& p4)      : dist(d),         param1(p1),         param2(p2),         param3(p3),         param4(p4) {}   const Dist& dist;   const RealType1& param1;   const RealType2& param2;   const RealType3& param3;   const RealType4& param4;private:   complemented5_type& operator=(const complemented5_type&);};template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5>struct complemented6_type{   complemented6_type(      const Dist& d,       const RealType1& p1,      const RealType2& p2,      const RealType3& p3,      const RealType4& p4,      const RealType5& p5)      : dist(d),         param1(p1),         param2(p2),         param3(p3),         param4(p4),         param5(p5) {}   const Dist& dist;   const RealType1& param1;   const RealType2& param2;   const RealType3& param3;   const RealType4& param4;   const RealType5& param5;private:   complemented6_type& operator=(const complemented6_type&);};template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5, class RealType6>struct complemented7_type{   complemented7_type(      const Dist& d,       const RealType1& p1,      const RealType2& p2,      const RealType3& p3,      const RealType4& p4,      const RealType5& p5,      const RealType6& p6)      : dist(d),         param1(p1),         param2(p2),         param3(p3),         param4(p4),         param5(p5),         param6(p6) {}   const Dist& dist;   const RealType1& param1;   const RealType2& param2;   const RealType3& param3;   const RealType4& param4;   const RealType5& param5;   const RealType6& param6;private:   complemented7_type& operator=(const complemented7_type&);};template <class Dist, class RealType>inline complemented2_type<Dist, RealType> complement(const Dist& d, const RealType& r){   return complemented2_type<Dist, RealType>(d, r);}template <class Dist, class RealType1, class RealType2>inline complemented3_type<Dist, RealType1, RealType2> complement(const Dist& d, const RealType1& r1, const RealType2& r2){   return complemented3_type<Dist, RealType1, RealType2>(d, r1, r2);}template <class Dist, class RealType1, class RealType2, class RealType3>inline complemented4_type<Dist, RealType1, RealType2, RealType3> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3){   return complemented4_type<Dist, RealType1, RealType2, RealType3>(d, r1, r2, r3);}template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4>inline complemented5_type<Dist, RealType1, RealType2, RealType3, RealType4> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3, const RealType4& r4){   return complemented5_type<Dist, RealType1, RealType2, RealType3, RealType4>(d, r1, r2, r3, r4);}template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5>inline complemented6_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3, const RealType4& r4, const RealType5& r5){   return complemented6_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5>(d, r1, r2, r3, r4, r5);}template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5, class RealType6>inline complemented7_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5, RealType6> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3, const RealType4& r4, const RealType5& r5, const RealType6& r6){   return complemented7_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5, RealType6>(d, r1, r2, r3, r4, r5, r6);}} // namespace math} // namespace boost#endif // BOOST_STATS_COMPLEMENT_HPP

⌨️ 快捷键说明

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