Предупреждение С++: функция, не являющаяся void, не возвращает значение во всех путях управленияC++

Программы на C++. Форум разработчиков
Anonymous
Предупреждение С++: функция, не являющаяся void, не возвращает значение во всех путях управления

Сообщение Anonymous »


Предупреждение: непустая функция не возвращает значение во всех путях управления...

Я знаю, что это означает, что циклы for ничего не возвращают, если данные пусты.
Как это исправить?
template
auto get(std::string argument_name) -> T {
if (argument_name.length() = 2) {
argument_name = "--" + helpers::convert_string_tolower(argument_name);
}

for (const auto &p_n: parser.storage | std::views::keys) {
for (const auto &[a_s_n, a_l_n] : parser.storage[p_n] | std::views::keys) {
if (argument_name == a_s_n || argument_name == a_l_n) {
ArgumentNamePair a_p = std::make_pair(a_s_n, a_l_n);
if (parser.storage[p_n][a_p].contains("value")) {
return std::get(parser.storage[p_n][a_p]["value"]);
}
}
}
}
}

Это моя основная функция, о которой я получаю это предупреждение:
ArgumentParser program("");
program.get("argument_1"); // here i get the warning.

Проблема в том, что я не могу вернуть NULL, поскольку здесь указан тип данных:
program.get("argument_name");


Подробнее здесь: https://stackoverflow.com/questions/786 ... trol-paths

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