8#ifndef COLUMNAR_VARIANT_VARIANT_ACCESSOR_H
9#define COLUMNAR_VARIANT_VARIANT_ACCESSOR_H
13#include <boost/mp11/tuple.hpp>
30 static_assert (!std::is_const_v<CT>,
"CT must not be const");
45 throw std::out_of_range (
"invalid variant index in VariantContainerId accessor");
46 return m_accessors[
id.getVariantIndex()](
id.getDataArea(),
id.getObjectIndex());
52 throw std::out_of_range (
"invalid variant index in VariantContainerId accessor");
53 return m_accessors[
id.getVariantIndex()].isAvailable(
id.getDataArea());
bool isAvailable(ObjectId< CI, CM > id) const
AccessorTemplate() noexcept=default
VariantContainerId< CIBase, CIList... > CI
std::array< detail::ContainerFreeAccessor< CT, CAM, CM >, CI::numVariants > m_accessors
a class representing a single object (electron, muons, etc.)
the backend implementation for AccessorTemplate
static constexpr bool isDefined
ColumnAccessMode
an enum for the different access modes for a column
static constexpr std::size_t numVariants