Я рассматриваю возможность рефакторинга кодовой базы среднего размера, чтобы всегда использовать инициализацию скобок. Есть ли какие-либо проблемы с эффективностью, о которых я должен знать?
Несколько примеров могут быть POD-типами и встроенными типами, а как насчет больших классов с множеством параметров построения?
Это зависит от того, что вы подразумеваете под «всегда использовать инициализацию скобок». Если вы конвертируете конструктор как
X x(a, b, c);
в
X x{a, b, c};
(и поведение не меняется из-за выбора другого конструктора), тогда сгенерированный код не должен становиться более или менее эффективным. С другой стороны:
std::vector<std::string> v{
"long character string a",
"long character string b",
"long character string c"};
вполне может быть менее эффективным, чем
std::vector<std::string> v;
v.push_back("long character string a");
v.push_back("long character string b");
v.push_back("long character string c");
из-за упомянутой проблемы @dyp, что вектор не может выйти из initializer_list
,
Других решений пока нет …