14 #include "canvas/Persistency/Common/Assns.h"
18 #include <type_traits>
23 using MetaAssns = art::Assns<long int, float, char>;
27 = std::decay_t<decltype(std::declval<PlainAssns>().
begin())>;
29 = std::decay_t<decltype(std::declval<MetaAssns>().
begin())>;
33 = std::decay_t<decltype(*(std::declval<PlainAssnsIter>()))>;
35 = std::decay_t<decltype(*(std::declval<MetaAssnsIter>()))>;
43 "assns_metadata_type<PlainAssns> should have been void! "
47 "assns_metadata_type<PlainAssns> node should have been void! "
51 "assns_metadata_type<MetaAssns> should have been char! "
55 "assns_metadata_type<MetaAssns> node should have been char! "
63 "assns_metadata_type_t<PlainAssns> should have been void! "
67 "assns_metadata_type_t<PlainAssns> node should have been void! "
71 "assns_metadata_type_t<MetaAssns> should have been char! "
75 "assns_metadata_type_t<MetaAssns> node should have been char! "
84 "assns_has_metadata<PlainAssns> should have been false! "
88 "assns_has_metadata<PlainAssns> node should have been false! "
92 "assns_has_metadata<MetaAssns> should have been true! "
96 "assns_has_metadata<MetaAssns> node should have been true! "
103 !lar::util::assns_has_metadata_v<PlainAssns>,
104 "assns_has_metadata<PlainAssns> should have been false! "
107 !lar::util::assns_has_metadata_v<PlainAssnsNode>,
108 "assns_has_metadata<PlainAssns> node should have been false! "
111 lar::util::assns_has_metadata_v<MetaAssns>,
112 "assns_has_metadata<MetaAssns> should have been true! "
115 lar::util::assns_has_metadata_v<MetaAssnsNode>,
116 "assns_has_metadata<MetaAssns> node should have been true! "
125 std::is_same<PlainAssnsTraits::left_t, int>(),
126 "left element of PlainAssns should have been `int`!"
129 std::is_same<PlainAssnsTraits::right_t, double>(),
130 "right element of PlainAssns should have been `double`!"
133 std::is_same<PlainAssnsTraits::data_t, void>(),
134 "metadata of PlainAssns should have been `void`!"
137 std::is_same<PlainAssnsTraits::leftptr_t, art::Ptr<int>>(),
138 "left element pointer of PlainAssns should have been `art::Ptr<int>`!"
141 std::is_same<PlainAssnsTraits::rightptr_t, art::Ptr<double>>(),
142 "right element pointer of PlainAssns should have been `art::Ptr<double>`!"
145 std::is_same<PlainAssnsTraits::dataptr_t, void const*>(),
146 "metadata pointer of PlainAssns should have been `void const*`!"
149 std::is_same<PlainAssnsTraits::assns_t, PlainAssns>(),
150 "PlainAssns traits should report `PlainAssns` as association class!"
153 std::is_same<PlainAssnsTraits::assns_iterator_t, PlainAssnsIter>(),
154 "PlainAssns traits should report `PlainAssnsIter` as association iterator!"
157 std::is_same<PlainAssnsTraits::art_assns_node_t, PlainAssnsNode>(),
158 "PlainAssns traits should report `PlainAssnsNode` as association node!"
161 !PlainAssnsTraits::hasMetadata,
162 "PlainAssns should have reported not to have metadata!"
167 std::is_same<MetaAssnsTraits::left_t, long int>(),
168 "left element of MetaAssns should have been `long int`!"
171 std::is_same<MetaAssnsTraits::right_t, float>(),
172 "right element of MetaAssns should have been `float`!"
175 std::is_same<MetaAssnsTraits::data_t, char>(),
176 "metadata of MetaAssns should have been `char`!"
179 std::is_same<MetaAssnsTraits::leftptr_t, art::Ptr<long int>>(),
180 "left element pointer of MetaAssns should have been `art::Ptr<long int>`!"
183 std::is_same<MetaAssnsTraits::rightptr_t, art::Ptr<float>>(),
184 "right element pointer of MetaAssns should have been `art::Ptr<float>`!"
187 std::is_same<MetaAssnsTraits::dataptr_t, char const*>(),
188 "metadata pointer of MetaAssns should have been `char const*`!"
191 std::is_same<MetaAssnsTraits::assns_t, MetaAssns>(),
192 "MetaAssns traits should report `MetaAssns` as association class!"
195 std::is_same<MetaAssnsTraits::assns_iterator_t, MetaAssnsIter>(),
196 "MetaAssns traits should report `MetaAssnsIter` as association iterator!"
199 std::is_same<MetaAssnsTraits::art_assns_node_t, MetaAssnsNode>(),
200 "MetaAssns traits should report `MetaAssnsNode` as association node!"
203 MetaAssnsTraits::hasMetadata,
204 "MetaAssns should have reported to have metadata!"
213 "assns_metadata_type<PlainAssns> should have been void! "
217 "assns_metadata_type<MetaAssns> should have been char! "
225 "assns_metadata_type<PlainAssns> should have been void! "
229 "assns_metadata_type<MetaAssns> should have been char! "
art::Assns< int, double > PlainAssns
Data types for the specified association type (or its node).
auto begin(FixedBins< T, C > const &) noexcept
std::decay_t< decltype(*(std::declval< MetaAssnsIter >()))> MetaAssnsNode
art::Assns< long int, float, char > MetaAssns
Traits for art associations.
std::decay_t< decltype(std::declval< PlainAssns >().begin())> PlainAssnsIter
int main(int argc, char **argv)
std::decay_t< decltype(std::declval< MetaAssns >().begin())> MetaAssnsIter
std::decay_t< decltype(*(std::declval< PlainAssnsIter >()))> PlainAssnsNode
Trait: type is iterator of Assns.