Код: Выделить всё
int result;
// ... other logic ...
if (happytimes) {
result = 0;
} else {
// TODO: handle the error and return errorcode().
}
// ... other logic ...
return result;
Код: Выделить всё
int result{};
// ... other logic ...
if (happytimes) {
result = 0;
} else {
// TODO: handle the error and return errorcode().
}
// ... other logic ...
return result;
Код: Выделить всё
template inline T Uninitialized() {
#if MUST_INIT_CASES
T value{};
#else
T value;
#endif
return value;
}
int result = Uninitialized();
< /code>
Но неудивительно, что ошибка была вызвана в шаблоне, а не в коде, который вернулся на результат шаблона. Я не мог понять, как пройти это прозрачно.#if MUST_INIT_CASES
# define UNINITIALISED {}
#else
# define UNINITIALISED
#endif
int result UNINITIALISED;
< /code>
Но, возможно, есть что -то более надежное? Не добавлять ложный инициатор. Если бы я не использовал Линтер, то Кланг сразу же вызвал эту новую ошибку. И если Кланг пропустил это, то модульные тесты с использованием -fsanitize = memory
Подробнее здесь: https://stackoverflow.com/questions/797 ... sions-of-c