| HerdSoftware
    0.3.2
    | 
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 | 
| 
 | default | 
| 
 | 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 | 
 1.8.13
 1.8.13