инициализировать массив, используя константные значения, используя шаблон времени компиляции - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь написать что-то вроде этого:

template <typename type,int p,int q = 1> struct const4array
    {
    static const type value [] = { type(p)/type(q) , type(p)/type(q) , type(p)/type(q) , type(1) } ;
    };

double xx [] = { 0.5 , 0.5 , 0.5 , 1 } ;
double yy [] = const4array<double,1,2>::value ; // I would like to have : xx == yy

Я думаю, что этот код легко понять для разработчика, но, очевидно, не для компилятора (он возвращает много ошибок).

Можно ли делать то, что я хочу, и если это так, как это делать правильно? (Я нашел много других вопросов, похожих на этот, но не настолько близких, чтобы соответствовать моим).

Заранее спасибо!

1 Ответ

1 голос
/ 07 июля 2019

Простые массивы в стиле C могут быть инициализированы только с использованием синтаксиса {}, они не могут быть инициализированы копированием из других массивов. Однако вы можете использовать объекты, эмулирующие или упаковывающие массивы (например, std::array), так как они могут быть скопированы и использованы для инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...