Check for container traits.
Note that for all uses in RDF we don't want to classify std::string as a container. Template specializations of IsDataContainer make it return true
for std::span<T>, std::vector<bool> and RVec<bool>, which we do want to count as containers even though they do not satisfy all the traits tested by the generic IsDataContainer<T>.
Public Types | |
using | Test_t = std::decay_t< T > |
Static Public Member Functions | |
template<typename A > | |
static constexpr bool | Test (...) |
template<typename A > | |
static constexpr bool | Test (A *pt, A const *cpt=nullptr, decltype(pt->begin()) *=nullptr, decltype(pt->end()) *=nullptr, decltype(cpt->begin()) *=nullptr, decltype(cpt->end()) *=nullptr, typename A::iterator *pi=nullptr, typename A::const_iterator *pci=nullptr) |
Static Public Attributes | |
static constexpr bool | value = Test<Test_t>(nullptr) |
#include <ROOT/RDF/Utils.hxx>
using ROOT::Internal::RDF::IsDataContainer< T >::Test_t = std::decay_t<T> |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
staticconstexpr |