HerdSoftware
0.1.1
|
A forwarder class for std::array. More...
#include <common/ArrayForwarder.h>
Public Types | |
typedef _Tp | value_type |
typedef value_type * | pointer |
typedef const value_type * | const_pointer |
typedef value_type & | reference |
typedef const value_type & | const_reference |
typedef value_type * | iterator |
typedef const value_type * | const_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 |
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 const value_type* Herd::ArrayForwarder< _Tp, _Nm >::const_iterator |
typedef const value_type* Herd::ArrayForwarder< _Tp, _Nm >::const_pointer |
typedef const value_type& Herd::ArrayForwarder< _Tp, _Nm >::const_reference |
typedef std::reverse_iterator<const_iterator> Herd::ArrayForwarder< _Tp, _Nm >::const_reverse_iterator |
typedef std::ptrdiff_t Herd::ArrayForwarder< _Tp, _Nm >::difference_type |
typedef value_type* Herd::ArrayForwarder< _Tp, _Nm >::iterator |
typedef value_type* Herd::ArrayForwarder< _Tp, _Nm >::pointer |
typedef value_type& Herd::ArrayForwarder< _Tp, _Nm >::reference |
typedef std::reverse_iterator<iterator> Herd::ArrayForwarder< _Tp, _Nm >::reverse_iterator |
typedef std::size_t Herd::ArrayForwarder< _Tp, _Nm >::size_type |
typedef _Tp Herd::ArrayForwarder< _Tp, _Nm >::value_type |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |