Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
concepts.h
Go to the documentation of this file.
1 // This file's extension implies that it's C, but it's really -*- C++ -*-.
2 /*
3  * Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration.
4  */
13 #ifndef CXXUTILS_CONCEPTS_H
14 #define CXXUTILS_CONCEPTS_H
15 
16 
17 #include <type_traits>
18 #include <iterator>
19 #include <concepts>
20 
21 
22 // Some library concepts.
23 
24 namespace CxxUtils {
25 namespace detail {
26 
27 
28 // Standard library Hash requirement.
29 template <class HASHER, class T>
30 concept IsHash =
31  std::destructible<HASHER> &&
32  std::copy_constructible<HASHER> &&
33  requires (const HASHER& h, T x)
34 {
35  { h(x) } -> std::same_as<std::size_t>;
36 };
37 
38 
39 // Standard library BinaryPredicate requirement.
40 template <class PRED, class ARG1, class ARG2=ARG1>
42  std::copy_constructible<PRED> &&
43  std::predicate<PRED, ARG1, ARG2>;
44 
45 
46 template <class CONTAINER>
48  requires (CONTAINER& c)
49  {
50  requires std::contiguous_iterator<decltype(c.begin())>;
51  };
52 
53 
54 template <class ITERATOR, class VAL>
56  std::input_iterator<ITERATOR> &&
57  std::convertible_to<std::iter_value_t<ITERATOR>, VAL>;
58 
59 
60 } // namespace detail
61 } // namespace CxxUtils
62 
63 
64 
65 #endif // not CXXUTILS_CONCEPTS_H
detail
Definition: extract_histogram_tag.cxx:14
x
#define x
CxxUtils::detail::IsHash
concept IsHash
Definition: concepts.h:30
CxxUtils::detail::InputValIterator
concept InputValIterator
Definition: concepts.h:55
extractSporadic.h
list h
Definition: extractSporadic.py:97
CxxUtils
Definition: aligned_vector.h:29
CxxUtils::requires
requires(detail::IsConcurrentHashmapPayload< KEY > &&detail::IsConcurrentHashmapPayload< VALUE > &&detail::IsUpdater< UPDATER > &&detail::IsHash< HASHER, KEY > &&detail::IsBinaryPredicate< MATCHER, KEY >) class ConcurrentMap
Hash map from integers/pointers allowing concurrent, lockless reads.
Definition: ConcurrentMap.h:94
CxxUtils::detail::IsContiguousContainer
concept IsContiguousContainer
Definition: concepts.h:47
CxxUtils::detail::IsBinaryPredicate
concept IsBinaryPredicate
Definition: concepts.h:41
h
python.compressB64.c
def c
Definition: compressB64.py:93