18 template<
typename...Args>
24 template<
typename... Ts>
30 template<
typename... Ts>
36 template <
typename T,
typename =
void>
45 decltype(*std::declval<T &>()),
46 decltype(std::declval<T &>() == std::declval<T &>()) > >
58 template<
typename T,
typename V>
60 std::enable_if < is_iterator<T>::type::value &&
61 std::is_same<typename std::iterator_traits<T>::value_type, V>::type::value,
void >;
66 template <
typename tol_type,
bool IsIntegral>
69 template <
typename tol_type>
73 tol_type
tol()
const {
78 template <
typename tol_type>
92 template<
bool IsConst,
typename T>
93 using ConstSwitch =
typename std::conditional<IsConst, const T, T>::type;
97 template<
typename value_type>
101 bool operator()(
const value_type &A,
const value_type &B)
const {
106 template<
typename value_type>
109 bool operator()(
const value_type &A,
const value_type &B)
const {
110 return A +
m_tol < B;
122 template <
typename Container,
123 typename _value_type =
typename Container::value_type,
124 typename _size_type =
typename Container::size_type >
136 value_type &
operator()(Container &container, size_type index)
const {
137 return container[index];
141 const value_type &
operator()(
const Container &container, size_type index)
const {
142 return container[index];
146 value_type &
operator()(Container &container, size_type i, size_type j)
const {
147 return container[i][j];
151 const value_type &
operator()(
const Container &container, size_type i, size_type j)
const {
152 return container[i][j];
156 static value_type &
at(Container &container, size_type index) {
157 return container[index];
161 static const value_type &
at(
const Container &container, size_type index) {
162 return container[index];
166 static value_type &
at(Container &container, size_type i, size_type j) {
167 return container[i][j];
171 static const value_type &
at(
const Container &container, size_type i, size_type j) {
172 return container[i][j];
177 template <
typename Container,
178 typename _value_type =
typename Container::value_type,
179 typename _size_type =
typename Container::size_type >
192 value_type &
operator()(Container &container, size_type index)
const {
193 return container(index);
197 const value_type &
operator()(
const Container &container, size_type index)
const {
198 return container(index);
202 value_type &
operator()(Container &container, size_type i, size_type j)
const {
203 return container(i, j);
207 const value_type &
operator()(
const Container &container, size_type i, size_type j)
const {
208 return container(i, j);
212 static value_type &
at(Container &container, size_type index) {
213 return container(index);
217 static const value_type &
at(
const Container &container, size_type index) {
218 return container(index);
222 static value_type &
at(Container &container, size_type i, size_type j) {
223 return container(i, j);
227 static const value_type &
at(
const Container &container, size_type i, size_type j) {
228 return container(i, j);
static const value_type & at(const Container &container, size_type index)
Identical to 'return container[index];'.
value_type & operator()(Container &container, size_type index) const
Identical to 'return container(index);'.
typename std::conditional< IsConst, const T, T >::type ConstSwitch
bool operator()(const value_type &A, const value_type &B) const
Alias for void, to help SFINAE work.
value_type & operator()(Container &container, size_type i, size_type j) const
Identical to 'return container(index);'.
const value_type & operator()(const Container &container, size_type index) const
Identical to 'return container(index);'.
value_type & operator()(Container &container, size_type i, size_type j) const
Identical to 'return container[i][j];'.
static const value_type & at(const Container &container, size_type index)
Identical to 'return container(index);'.
BracketAccess & operator=(const BracketAccess &)
typename make_void< Ts...>::type void_t
Alias for void, to help SFINAE work.
IntegralLessThan(value_type)
ParenthesesAccess & operator=(const ParenthesesAccess &)
std::enable_if< is_iterator< T >::type::value &&std::is_same< typename std::iterator_traits< T >::value_type, V >::type::value, void > enable_if_iterator_of
Template alias to enable a template function via SFINAE for an iterator with value_type V...
static value_type & at(Container &container, size_type index)
Identical to 'return container(index);'.
Base type inherits from std::false_type if T is not iterator.
Helper Functor for Counter container access using operator()
static value_type & at(Container &container, size_type i, size_type j)
Identical to 'return container[i][j];'.
static const value_type & at(const Container &container, size_type i, size_type j)
Identical to 'return container(i,j);'.
static value_type & at(Container &container, size_type i, size_type j)
Identical to 'return container(i,j);'.
const value_type & operator()(const Container &container, size_type i, size_type j) const
Identical to 'return container(index);'.
static const value_type & at(const Container &container, size_type i, size_type j)
Identical to 'return container[i][j];'.
static value_type & at(Container &container, size_type index)
Identical to 'return container[index];'.
FloatingPointLessThan(value_type _tol=TOL)
const value_type & operator()(const Container &container, size_type index) const
Identical to 'return container[index];'.
const value_type & operator()(const Container &container, size_type i, size_type j) const
Identical to 'return container[i][j];'.
Helper Functor for Counter container access using operator[].
std::enable_if< is_iterator< T >::type::value, void > enable_if_iterator
Template alias to enable a template function via SFINAE for any iterator.
void ignore_returnvalues(Args &&...)
Enables calling a function on each argument in a parameter pack.
value_type & operator()(Container &container, size_type index) const
Identical to 'return container[index];'.
IfIntegralTol(tol_type _tol)
typename std::conditional< boost::is_integral< T >::value, IntegralLessThan< T >, FloatingPointLessThan< T > >::type MuchLessThan
bool operator()(const value_type &A, const value_type &B) const