dune-functions  2.5.1
flatmultiindex.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_FLATMULTIINDEX_HH
4 #define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_FLATMULTIINDEX_HH
5 
6 #include <array>
7 
8 #include <dune/common/hash.hh>
9 
10 namespace Dune {
11 namespace Functions {
12 
13 
14 
22 template<class size_type>
24  public std::array<size_type,1>
25 {
26 public:
27 
28  constexpr FlatMultiIndex() = default;
29 
39  FlatMultiIndex(std::initializer_list<size_type> const &l) :
40  std::array<size_type,1>{{*l.begin()}}
41  {}
42 
43  operator const size_type& () const
44  {
45  return this->operator[](0);
46  }
47 
48  operator size_type& ()
49  {
50  return this->operator[](0);
51  }
52 
53  inline friend std::size_t hash_value(const FlatMultiIndex& arg)
54  {
55  return std::hash<size_type>()(arg);
56  }
57 
58 };
59 
60 
61 
62 } // end namespace Functions
63 } // end namespace Dune
64 
65 DUNE_DEFINE_HASH(DUNE_HASH_TEMPLATE_ARGS(typename size_type),DUNE_HASH_TYPE(Dune::Functions::FlatMultiIndex<size_type>))
66 
67 #endif // DUNE_FUNCTIONS_FUNCTIONSPACEBASES_FLATMULTIINDEX_HH
FlatMultiIndex(std::initializer_list< size_type > const &l)
Construct from initializer_list.
Definition: flatmultiindex.hh:39
constexpr FlatMultiIndex()=default
Definition: polynomial.hh:7
STL namespace.
A multi index class with only one level.
Definition: flatmultiindex.hh:23