Этот код хорошо компилируется:
const double d[20] {};
dlib::matrix< double, 20, 1 > m( d );
пока это ломается:
const std::array<double, 20> dd {};
dlib::matrix< double, 20, 1 > mm( dd.data() );
с сообщением:
model.cpp: In lambda function:
model.cpp:125:101: error: no matching function for call to ‘dlib::matrix<double, 20, 1>::matrix(std::array<double, 20>::const_pointer)’
const std::array<double, 20> dd {}; dlib::matrix< double, 20, 1 > mm( dd.data() ); (void)mm;
^
compilation terminated due to -Wfatal-errors.
Если я:
reinterpret_cast< const double [20] >( dd.data() );
Мне сообщили, что это запрещено:
model.cpp: In lambda function:
model.cpp:126:100: error: invalid cast from type ‘std::array<double, 20>::const_pointer’ {aka ‘const double*’} to type ‘double [20]’
dlib::matrix< double, 20, 1 > mm( reinterpret_cast<const double [20]>(dd.data()) );
^
compilation terminated due to -Wfatal-errors.
Этот является конструктором, на который я нацеливаюсь:
template <typename U, size_t len>
explicit matrix (
U (&array)[len]
);