]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/accumulators/include/boost/accumulators/statistics/error_of.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / accumulators / include / boost / accumulators / statistics / error_of.hpp
CommitLineData
7c673cae
FG
1///////////////////////////////////////////////////////////////////////////////
2// error_of.hpp
3//
4// Copyright 2005 Eric Niebler. Distributed under the Boost
5// Software License, Version 1.0. (See accompanying file
6// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
8#ifndef BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_HPP_EAN_29_11_2005
9#define BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_HPP_EAN_29_11_2005
10
11#include <boost/mpl/placeholders.hpp>
12#include <boost/accumulators/framework/accumulator_base.hpp>
13#include <boost/accumulators/framework/extractor.hpp>
14#include <boost/accumulators/framework/depends_on.hpp>
15#include <boost/accumulators/statistics_fwd.hpp>
16
17namespace boost { namespace accumulators
18{
19
20namespace impl
21{
22 /// INTERNAL ONLY
23 ///
24 template<typename Feature>
25 struct this_feature_has_no_error_calculation
26 : mpl::false_
27 {
28 };
29
30 ///////////////////////////////////////////////////////////////////////////////
31 // error_of_impl
32 /// INTERNAL ONLY
33 ///
34 template<typename Sample, typename Feature>
35 struct error_of_impl
36 : accumulator_base
37 {
38 // TODO: specialize this on the specific features that have errors we're
39 // interested in.
40 BOOST_MPL_ASSERT((this_feature_has_no_error_calculation<Feature>));
41
42 // for boost::result_of
43 typedef int result_type;
44
45 error_of_impl(dont_care)
46 {
47 }
48
49 result_type result(dont_care) const
50 {
51 return 0;
52 }
53 };
54
55} // namespace impl
56
57///////////////////////////////////////////////////////////////////////////////
58// tag::error_of
59//
60namespace tag
61{
62 template<typename Feature>
63 struct error_of
64 : depends_on<Feature>
65 {
66 /// INTERNAL ONLY
67 ///
68 typedef accumulators::impl::error_of_impl<mpl::_1, Feature> impl;
69 };
70}
71
72///////////////////////////////////////////////////////////////////////////////
73// extract::error_of
74//
75namespace extract
76{
77 BOOST_ACCUMULATORS_DEFINE_EXTRACTOR(tag, error_of, (typename))
78}
79
80using extract::error_of;
81
82// make tag::error_of<tag::feature(modifier)> work
83template<typename Feature>
84struct as_feature<tag::error_of<Feature> >
85{
86 typedef tag::error_of<typename as_feature<Feature>::type> type;
87};
88
89// make error_of<tag::mean> work with non-void weights (should become
90// error_of<tag::weighted_mean>
91template<typename Feature>
92struct as_weighted_feature<tag::error_of<Feature> >
93{
94 typedef tag::error_of<typename as_weighted_feature<Feature>::type> type;
95};
96
97}} // namespace boost::accumulators
98
99#endif