使用 C++11 在编译时组合两个字符串的最简单方法

use*_*425 6 c++

我正在尝试连接两个编译时字符串:

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++ 中是否有一种现代、简单的方法可以做到这一点?

πάν*_*ῥεῖ 1

在 C++ 中是否有一种现代、简单的方法可以做到这一点?

最终的答案是:

在编译时使用函数实际上无法做到这一点constexpr

 return getString1() + getString2();
Run Code Online (Sandbox Code Playgroud)

会尝试添加两个指针,这对编译器来说没有意义。

任何其他尝试都需要检查实际字符文字的串联(例如类似的内容strcat()),而这在编译时无法完成。

可用的替代方案是使用注释中指出的宏。


也许有人能够做一些黑色巫术模板魔法,但我怀疑无论如何这是否值得。

  • 这是 Yakk 的一些 [模板魔法](http://stackoverflow.com/questions/28708497/constexpr-to-concatenate-two-or-more-char-strings) 来做到这一点:) (2认同)