Библиотека CTRE способна анализировать и проверять регулярные выражения во время компиляции, используя такой синтаксис, как ctre::match(text_to_search). Я знаю, что этот синтаксис поддерживается только в C++20, и это нормально, но я не могу использовать строковые литералы таким образом, что бы я ни пытался. Вот очень простой пример:
Код: Выделить всё
// The compiler refuses to pass string literals to STR in this compile time version.
template constexpr int to_int_compile_time()
{
return STR[0] - '0';
}
// It has no problems passing the string literal to str in this version.
int to_int_runtime(char const str[2])
{
return str[0] - '0';
}
Вызов to_int_runtime("0") работает нормально, но to_int_compile_time() жалуется, что для этого шаблона нельзя использовать строковые литералы параметр. Как следует написать to_int_compile_time, чтобы строковый литерал можно было передать в параметр шаблона массива символов?
Подробнее здесь:
https://stackoverflow.com/questions/680 ... -parameter