Boost MPL字符串

13

嗨,在boost mpl文档中,我发现了mpl::string和以下示例:

typedef mpl::string<'hell','o wo','rld'> hello;

我有点惊讶,因为我认为在C或C++中,我们无法在字符'之间有多个字符?

这是正常而有效的吗?


1
只是提供一下信息。如果您有c++11可用,这篇文章(http://cpp-next.com/archive/2012/10/using-strings-in-c-template-metaprograms/)提供了更好的解决方案。 - KitsuneYMG
1
那个链接现在已经失效了 :( - Sam Kellett
1个回答

11

是的,这是有效的 C++ 代码。根据任何现有的 C++ 标准,可以从 [lex.conn] 章节得知:

一个普通字符字面值如果包含多个 c-char,那么它就是一个 多字符字面值。多字符字面值的类型是 int,其具体实现取决于编译器。


3
哦,那就是为什么我们不能在“ ”之间有5个字符的原因。 - Guillaume Paris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接