我正在尝试连接两个编译时字符串:
constexpr const char* getString1() { return "abababa"; };
constexpr const char* getString2() { return "lalalal"; };
constexpr const char* getString3() { return getString1() + getString2(); }; //wont compile
Run Code Online (Sandbox Code Playgroud)
在 C++ 中是否有一种现代、简单的方法可以做到这一点?
在 C++ 中是否有一种现代、简单的方法可以做到这一点?
最终的答案是:
在编译时使用函数实际上无法做到这一点constexpr。
return getString1() + getString2();
Run Code Online (Sandbox Code Playgroud)
会尝试添加两个指针,这对编译器来说没有意义。
任何其他尝试都需要检查实际字符文字的串联(例如类似的内容strcat()),而这在编译时无法完成。
可用的替代方案是使用注释中指出的宏。
也许有人能够做一些黑色巫术模板魔法,但我怀疑无论如何这是否值得。