я исследовал, насколько я мог бы взять constexpr обугленного сопза * конкатенация из этого ответа: constexpr to concatenate two or more char stringsconstexpr с конкатенацией, параметры, используемые в контексте constexpr
У меня есть следующий код пользователя, который показывает, что именно я м пытается сделать. Похоже, что компилятор не может видеть, что параметры функции (a и b) передаются как constexpr.
Может ли кто-нибудь увидеть способ сделать два, которые я указываю, не работает ниже, на самом деле работает? Было бы чрезвычайно удобно объединять массивы символов с помощью таких функций.
template<typename A, typename B>
constexpr auto
test1(A a, B b)
{
return concat(a, b);
}
constexpr auto
test2(char const* a, char const* b)
{
return concat(a, b);
}
int main()
{
{
// works
auto constexpr text = concat("hi", " ", "there!");
std::cout << text.data();
}
{
// doesn't work
auto constexpr text = test1("uh", " oh");
std::cout << text.data();
}
{
// doesn't work
auto constexpr text = test2("uh", " oh");
std::cout << text.data();
}
}