Вот конструктор, который у меня сейчас есть:
Код: Выделить всё
template
vec::vec(std::initializer_list init_list) : data_v{std::make_unique()}
{
assert(init_list.size() == L); // Runtime check
std::copy(init_list.begin(), init_list.end(), data_v->begin());
}
Мой вопрос:
Есть ли способ выполнить эту проверку длины в списке инициализаторов во время компиляции? Я рассматривал возможность использования static_assert, но не нашел способа сделать это с помощью std::initializer_list, поскольку его размер неизвестен во время компиляции.
Есть ли какой-нибудь метод или подход на C++, который позволил бы мне выполнить эту проверку во время компиляции?
Подробнее здесь: https://stackoverflow.com/questions/793 ... tializer-l
Мобильная версия