В моем заголовке, в рамках тела класса, я объявляю вектор кортежей, где все постоянно. Это просто данные, через которые я собираюсь пройти, когда я выполняю задачу ... < /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/Foo.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 ... < /p>
РЕДАКТИРОВАТЬ: вот код, на котором я установил. Нет дополнений исходного файла. Это файл заголовка ... < /p>
static constexpr std::array _data {
{
{{"One", 1},
{"Two", 2},
...
{"Ten", 10}}
};
Подробнее здесь: https://stackoverflow.com/questions/794 ... -container
Инициализация сложного конструктора для статического контейнера Const ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Эффективная реализация конструктора контейнера std :: vector-подобного контейнера
Anonymous » » в форуме C++ - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-