Является ли объявление массива stati c const внутри функции получения разумным способом сохранения целостности кода? Я никогда не видел этого раньше, но в обзоре кода я нашел что-то вроде этого:
static const std::array<std::string, 4>& fooArrayGetter()
{
static const std::array<std::string, 4> fooArray =
{"foo" ,"bar", "baz", "qux"};
return fooArray;
}
Это выглядит правильно: массив выделяется только один раз, довольно элегантно, потому что getter объединяется со своим значением, но запускает его внутри Godbolt https://godbolt.org/z/K8Wv94 дает действительно грязный ассемблер по сравнению с выполнением всей операции более стандартным способом. В качестве мотивации для этого кода я получил ссылку на пункт 4 от Мейерса «Эффективный C ++
* 1008» * Редактировать: G CC компилятор с флагом --std = c ++ 11