Конкурсивное отделение рекурсивной функции contexpr с аргументомC++

Программы на C++. Форум разработчиков
Anonymous
Конкурсивное отделение рекурсивной функции contexpr с аргументом

Сообщение Anonymous »

Код: Выделить всё

template
consteval auto foo(std::string_view sv)
{
if constexpr (i != vs::field_count()){
constexpr auto name = vs::get_name();
if constexpr (sv == name) //'constexpr' here not allowed, but needed for type deduction
return vs::get_pointer();
else
return foo(sv);

} else
return (int T::*)nullptr;
}
< /code>
all vs :: < /code> Функции contexpr.

foo
вызывается с помощью ContexPR Country STD :: String_view .
Я понимаю, что я не могу поместить Contexpr ключевое слово перед условием (SV == name) , потому что SV не может быть выражением времени компиляции (хотя я установил константу функции . contexpr не позволяет думать, что компилятор тип возврата одинаков. чем (int t ::*) nullptr , поэтому мне нужно вывернуть тип возврата.

Подробнее здесь: https://stackoverflow.com/questions/796 ... h-argument

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