Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
IsUpdater.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_ISUPDATER_H
14 #define CXXUTILS_ISUPDATER_H
15 
16 
17 #include "CxxUtils/concepts.h"
18 #include <memory>
19 
20 
21 namespace CxxUtils {
22 namespace detail {
23 
24 
50 template <template <class> class UPDATER>
51 concept IsUpdater = requires(UPDATER<int> x,
52  const typename UPDATER<int>::Context_t& ctx)
53 {
54  typename UPDATER<int>::Context_t;
55  { x.get() } -> std::same_as<const int&>;
56  { x.update (std::make_unique<int>(0), ctx) };
57  { x.quiescent (ctx) };
58  { x.defaultContext() } -> std::convertible_to<typename UPDATER<int>::Context_t>;
59 };
60 
61 
62 } // namespace detail
63 } // namespace CxxUtils
64 
65 
66 #endif // not CXXUTILS_ISUPDATER_H
detail
Definition: extract_histogram_tag.cxx:14
x
#define x
CxxUtils
Definition: aligned_vector.h:29
CxxUtils::detail::IsUpdater
concept IsUpdater
Concept check for Updater class used by concurrent classes.
Definition: IsUpdater.h:51
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
concepts.h
A couple standard-library related concepts.