Прямое строка буквально к постоянной функцииC++

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

Сообщение Anonymous »

Мой API потребует вызова времени выполнения (constfoo (str)) , чтобы получить окончательный результат, я хотел сократить это, потому что реальные имена функций являются как бы условны. Для этого мне нужно каким-то образом обернуть постоянную функцию, но я не могу сделать это, поскольку аргумент не может быть контейкспр, это также строковый буквальный, который требует, чтобы его размер был известен во время компиляции. PrettyPrint-Override ">

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

int runtime(int val) {
std::string foo = "foo"; // some run time operation
return val + 2;
}

template  consteval int constFoo(const char (&data)[N]) {
// ...
const auto d = data[0];
return N;
}

template  int outer(const char (&data)[N]) {
int val = constFoo(data); // Call to consteval function 'constFoo' is not a constant expression
return runtime(val);
}

int main() {
auto d = outer("d");
}
Кроме того, если бы это было как -то возможно, я бы предпочел избежать решения, в котором букваль передается как аргумент шаблона, но, насколько я знаю, это невозможно.

Подробнее здесь: https://stackoverflow.com/questions/797 ... l-function

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