EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
all_of.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file all_of.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 #include <type_traits>
11 
12 namespace Acts {
13 
14 namespace detail {
15 
16 namespace {
17 // clang-format off
18  template <bool... values>
19  struct all_of : std::true_type {};
20 
21  template <bool... others>
22  struct all_of<false, others...> : public std::false_type {};
23 
24  template <bool... others>
25  struct all_of<true, others...> : public all_of<others...> {};
26 // clang-format on
27 } // end of anonymous namespace
28 
29 template <bool... values>
30 constexpr bool all_of_v = all_of<values...>::value;
31 } // namespace detail
32 
33 } // namespace Acts