Some template-related cleanup for Span
Created by: germasch
This is basically all cleanup only. The one API change is that cxx11::Span
and core::Span
become top-level classes (ie, not nested within Variable
). That is for two reasons:
- So that
core::Span
can be forward declared and hence directly used in the pimpl-typecxx11::Span
without resorting toreinterpret_cast
. - So that the
Spans
can be defined / instantiated as a whole class, rather than being all specialized by a macro loop for each type.
There is no user-visible change, except that Span
is now also available as adios2::Span<T>
in addition to adios2::Variable<T>::Span
, which I'd argue makes life a bit easier. But if you want avoid polluting of the adios2
namespace, it could be moved to adios2::detail
.
The patch does remove Span::rbegin
and Span::rend
because they were broken (wouldn't compile, but that didn't show because they were never instantiated). They obviously could be added back if one were to properly implement bidirectional or random access operators.
This PR reduces code size (lines of code):
7 files changed, 146 insertions(+), 186 deletions(-)