Инициализация сложного конструктора для статического контейнера ConstC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Инициализация сложного конструктора для статического контейнера Const

Сообщение Anonymous »

В моем заголовке, в рамках тела класса, я объявляю вектор кортежей, где все постоянно. Это просто данные, через которые я собираюсь пройти, когда я выполняю задачу ... < /p>

Код: Выделить всё

class Foo {
public:
...
static const std::vector _data;
< /code>
В соответствующем исходном файле я заполняю данные ... < /p>
const std::vector
Foo::_data
{
std::make_tuple("One",    1),
std::make_tuple("Two",    2),
...
std::make_tuple("Many",  10)
};
Это бросает в Clang-tidy ошибка Cert-ERR58-CPP ...

Код: Выделить всё

/path/to/src/Data.cpp:783:14: warning: initialization of '_data' with static storage duration may throw an exception that cannot be caught [cert-err58-cpp]
Foo::_data
^
/path/to/gcc-9.2.0/lib/gcc/x86_64-redhat-linux/9.2.0/../../../../include/c++/9.2.0/bits/stl_vector.h:622:7: note: possibly throwing constructor declared here
vector(initializer_list __l,
^
Я понимаю, что есть случаи, когда вектор не может найти места для хранения данных, поэтому выставит исключение. Здесь у меня нет возможности попробовать/поймать это, хотя. В любом случае, это чувствует себя чрезмерным для этого. Какое лучшее решение здесь ...?
Использование std :: array вместо std :: vector просто подталкивает проблему до ate_tuple ...

Подробнее здесь: https://stackoverflow.com/questions/794 ... -container
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»