Is there a way to substitute VECTOR_TYPE::*memberlist[sizeof...(SCALAR)] by std::array< ??? >?
struct myVec
{
double x;
double y;
};
template < typename VECTOR_TYPE, typename SCALAR_TYPE, SCALAR_TYPE VECTOR_TYPE::*...SCALAR >
struct vector_template : VECTOR_TYPE
{
SCALAR_TYPE & operator[]( size_t inx )
{
constexpr SCALAR_TYPE VECTOR_TYPE::*memberlist[sizeof...(SCALAR)]{ SCALAR... };
return this->*(memberlist[inx]);
}
};
int main()
{
vector_template < myVec, double, &myVec::x, &myVec::y > vec;
vec[0] = 0.0;
vec[1] = 0.0;
return 0;
}
Of course. T x[N]{args...} can be replaced by std::array<T,N> x{args...}. In this case:
constexpr std::array<SCALAR_TYPE VECTOR_TYPE::*, sizeof...(SCALAR) >
memberlist{{SCALAR...}};
Either way, it won't make any difference in this case.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With