Revived from #127. For C++17 auto [a, b] = someType;, among others:
The assumption is that there will be more and more C++14/17/20-specific features, so the ton of new files is fine.
The std::tuple_element / std::tuple_size is a C++11 feature already so I wouldn't hide them in any #if compiling_as_cpp17. Having them exposed unconditionally would mean std::get<N>() working with Corrade/Magnum types even under C++11, for example.
And for Magnum a similar treatment would be done for Math::Vector and possibly other math types, in a similar way.
Revived from #127. For C++17
auto [a, b] = someType;, among others:Containers::Pair, for which thestd::tuple_whateverspecializations could go into the already-existingContainers/PairStl.h, and a corresponding new C++17-onlyPairStlCpp17Test.cppContainers::Triple, for which thestd::tuple_whateverspecializations could go into the already-existingContainers/TripleStl.h, and a corresponding new C++17-onlyTripleStlCpp17Test.cppContainers::StaticArrayView, for which it could go into the already-existingContainers/ArrayViewStl.h, and a corresponding newArrayViewStlCpp17Test.cppContainers::StaticArray, into a newStaticArrayStl.hheader, and a newStaticArrayStlCpp17Test.cppas wellThe assumption is that there will be more and more C++14/17/20-specific features, so the ton of new files is fine.
The
std::tuple_element/std::tuple_sizeis a C++11 feature already so I wouldn't hide them in any#if compiling_as_cpp17. Having them exposed unconditionally would meanstd::get<N>()working with Corrade/Magnum types even under C++11, for example.std::get<N>()on them, and if that works, the C++17 structured bindings should work too.And for Magnum a similar treatment would be done for
Math::Vectorand possibly other math types, in a similar way.