ATLAS Offline Software
AuxElementConcepts.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  */
21 #ifndef ATHCONTAINERS_AUXELEMENTCONCEPTS_H
22 #define ATHCONTAINERS_AUXELEMENTCONCEPTS_H
23 
24 
27 
28 
29 namespace SG {
30 
31 
33 template <class T>
35  requires (const T& elt)
36  {
37  { elt } -> std::convertible_to<const IAuxElement&>;
38  { elt.container() } -> std::convertible_to<const AuxVectorData*>;
39  };
40 
41 
43 template <class T>
44 concept IsAuxElement =
45  requires (T& elt)
46  {
47  { elt } -> std::convertible_to<IAuxElement&>;
48  { elt.container() } -> std::convertible_to<AuxVectorData*>;
49  };
50 
51 
52 } // namespace SG
53 
54 
55 #endif // not ATHCONTAINERS_AUXELEMENTCONCEPTS_H
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
IAuxElement.h
Flag that a class may have auxiliary data associated with it.
requires
requires requires()
This specialization is used for classes deriving from DataObject.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:68
SG::IsAuxElement
concept IsAuxElement
Test if T is compatible with AuxElement.
Definition: AuxElementConcepts.h:44
AuxVectorData.h
Manage lookup of vectors of auxiliary data.
SG::IsConstAuxElement
concept IsConstAuxElement
Test if T is compatible with ConstAuxElement.
Definition: AuxElementConcepts.h:34