NiHu  2.0
crtp_base.hpp
Go to the documentation of this file.
1 // This file is a part of NiHu, a C++ BEM template library.
2 //
3 // Copyright (C) 2012-2014 Peter Fiala <fiala@hit.bme.hu>
4 // Copyright (C) 2012-2014 Peter Rucz <rucz@hit.bme.hu>
5 //
6 // This program is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program. If not, see <http://www.gnu.org/licenses/>.
18 
25 #ifndef CRTP_BASE_HPP_INCLUDED
26 #define CRTP_BASE_HPP_INCLUDED
27 
29 #define NIHU_CRTP_HELPERS \
30  Derived const &derived() const \
31  { \
32  return static_cast<Derived const &>(*this); \
33  } \
34  Derived &derived() \
35  { \
36  return static_cast<Derived &>(*this); \
37  }
38 
44 template <class T, class...Ignore>
45 struct ignore
46 {
47  typedef T type;
48 };
49 
51 template <class Derived, class Dummy>
52 typename ignore<Derived, Dummy>::type const* const_crtp_ptr(void)
53 {
54  return static_cast<typename ignore<Derived, Dummy>::type const*>(nullptr);
55 }
56 
57 #endif // CRTP_BASE_HPP_INCLUDED
58 
const_crtp_ptr
ignore< Derived, Dummy >::type const * const_crtp_ptr(void)
crtp decltype helper function
Definition: crtp_base.hpp:52
ignore
Metafunction returning its first argument and ignoring all subsequent.
Definition: crtp_base.hpp:45