EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
are_within.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file are_within.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2016-2018 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 namespace Acts {
12 namespace detail {
28 template <typename T, T MIN, T MAX, T... values>
29 struct are_within;
30 
32 // check last parameter
33 template <typename T, T MIN, T MAX, T a>
34 struct are_within<T, MIN, MAX, a> {
35  enum { value = (a >= MIN && a < MAX) };
36 };
37 
38 // recursive check
39 template <typename T, T MIN, T MAX, T a, T... others>
40 struct are_within<T, MIN, MAX, a, others...> {
41  enum {
42  value =
43  ((a >= MIN) && (a < MAX) && are_within<T, MIN, MAX, others...>::value)
44  };
45 };
47 } // namespace detail
49 } // namespace Acts