【发布时间】:2015-06-19 19:05:41
【问题描述】:
基本上,如果我有这个字符串:
"abcd"
我想最终得到相当于:
'abcd'
在编译时。我尝试过使用宏、预处理器魔法和 Microsoft 的 charize 运算符 (#@),但它们都不能正常工作。最终结果应该允许我做这样的事情:
template <long N> struct some_type {};
long whatever = STR_TO_MULTI_CHAR_LITERAL("abcd");
some_type<whatever> xyz;
【问题讨论】:
-
"Microsoft's charize operator" 那么您使用的是 MSVC 编译器吗?哪个版本? VS2015 / MSVC 19 支持 constexpr 函数..
-
@dyp
clang -fms-extensions,虽然结果应该在 MSVC 下工作没有 constexpr。 -
有可能将字符串分解为字符序列 (via macros),然后从该字符序列重建一个数字。
-
在您的情况下是否可以添加包含字符串的全局/静态局部变量的定义?
const char str[] = "abcd";之类的东西——这可以用来将字符串传递给元函数;不允许直接传递字符串文字。 -
@dyp 但是我可以索引它吗?
标签: c++ string character metaprogramming string-literals