HerdSoftware
0.4.0
|
A forwarder class for std::array. More...
#include <common/ArrayForwarder.h>
Public Types | |
typedef _Tp | value_type |
typedef value_type * | pointer |
typedef value_type & | reference |
typedef value_type * | iterator |
typedef std::size_t | size_type |
typedef std::ptrdiff_t | difference_type |
typedef std::reverse_iterator< iterator > | reverse_iterator |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
Public Attributes | |
const typedef value_type * | const_pointer |
const typedef value_type & | const_reference |
const typedef value_type * | const_iterator |
Private Attributes | |
std::array< _Tp, _Nm > | _content {} |
Friends | |
bool | operator== (const ArrayForwarder< _Tp, _Nm > &, const ArrayForwarder< _Tp, _Nm > &) |
bool | operator!= (const ArrayForwarder< _Tp, _Nm > &__one, const ArrayForwarder< _Tp, _Nm > &__two) |
bool | operator< (const ArrayForwarder< _Tp, _Nm > &__a, const ArrayForwarder< _Tp, _Nm > &__b) |
bool | operator> (const ArrayForwarder< _Tp, _Nm > &__one, const ArrayForwarder< _Tp, _Nm > &__two) |
bool | operator<= (const ArrayForwarder< _Tp, _Nm > &__one, const ArrayForwarder< _Tp, _Nm > &__two) |
bool | operator>= (const ArrayForwarder< _Tp, _Nm > &__one, const ArrayForwarder< _Tp, _Nm > &__two) |
A forwarder class for std::array.
std::array persistence in Root is treated in a way that makes classes deriving from it unsuitable for automatic dictionary generation, due to rootcling not generating the dictionary for the std::array base class. More information are available on the Root forum and bug tracker:
https://root-forum.cern.ch/t/cant-generate-dictionary-for-std-array-containing-a-custom-class/32592 https://sft.its.cern.ch/jira/browse/ROOT-9943
Until a proper fix is implemented in Root, the workaround is to define a class that implements the interface of std::array by forwarding all the calls to a private std::array member, and inherit from this forwarder class. In this way std::array is no longer a base class and there's no need to generate a dictionary for it, making rootcling happy again.
The declaration of ArrayForwarder is adapted from a copy-paste of std::array shipped with gcc 8.2.1.
typedef std::reverse_iterator<const_iterator> Herd::ArrayForwarder::const_reverse_iterator |
typedef std::ptrdiff_t Herd::ArrayForwarder::difference_type |
typedef value_type* Herd::ArrayForwarder::iterator |
typedef value_type* Herd::ArrayForwarder::pointer |
typedef std::reverse_iterator<iterator> Herd::ArrayForwarder::reverse_iterator |
typedef std::size_t Herd::ArrayForwarder::size_type |
typedef _Tp Herd::ArrayForwarder::value_type |
|
constexprdefault |
|
inlineconstexpr |
|
inline |
|
inlineconstexpr |
|
inlineconstexprnoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineconstexprnoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inlineconstexprnoexcept |
|
inlinenoexcept |
|
inlineconstexprnoexcept |
|
inlineconstexprnoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineconstexprnoexcept |
|
inlinenoexcept |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |
const typedef value_type* Herd::ArrayForwarder::const_iterator |
const typedef value_type* Herd::ArrayForwarder::const_pointer |
const typedef value_type& Herd::ArrayForwarder::const_reference |