Инициализировать dlib :: matrix из std :: array - PullRequest
0 голосов
/ 10 июля 2019

Этот код хорошо компилируется:

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]
    );
...