210 detail::BcollHelper<ProdB> bh(
assnsTag_);
211 detail::DataCollHelper<Data> dh;
212 typename EVENT::template HandleT<Assns<ProdA, ProdB, Data>> assnsHandle;
214 if (!assnsHandle.isValid()) {
215 return assnsHandle.whyFailed();
217 bh.init(aColl.size(), bColl);
218 dh.init(aColl.size(), dColl);
220 std::unordered_multimap<typename Ptr<ProdA>::const_pointer,
221 std::pair<Ptr<ProdB>, ptrdiff_t>>
224 for (
auto const& apair : *assnsHandle) {
225 if (apair.first.isAvailable()) {
228 typename decltype(lookupCache)::mapped_type(apair.
second,
counter));
236 for (
auto i =
cbegin(aColl),
e =
cend(aColl); i !=
e; ++i, ++bIndex) {
237 auto foundItems = lookupCache.equal_range(
239 if (foundItems.first != lookupCache.cend()) {
243 [&bh, &dh, &bColl, bIndex, &assnsHandle, &dColl](
auto const& itemPair) {
244 bh.fill(bIndex, itemPair.second.first, bColl);
245 dh.fill(itemPair.second.second, *assnsHandle, bIndex, dColl);
decltype(auto) constexpr cend(T &&obj)
ADL-aware version of std::cend.
auto counter(T begin, T end)
Returns an object to iterate values from begin to end in a range-for loop.
std::shared_ptr< art::Exception const > shared_exception_t
decltype(auto) constexpr cbegin(T &&obj)
ADL-aware version of std::cbegin.
second_as<> second
Type of time stored in seconds, in double precision.
WANTED_POINTER ensurePointer(InputIterator it)