niX*_*man 1 c++ variadic-templates c++11
最近,在gcc-trunk中实现了"用户定义的文字".请告诉我,我是否正确理解我无法为可变参数字符模板定义"用户定义的文字"?
template<char... chars>
int operator"" _call() { return sizeof...(chars); }
...
std::cout << "method"_call;
Run Code Online (Sandbox Code Playgroud)
向上.
我不明白为什么允许这个表达式:
template<char... chars>
int operator"" _call() { return sizeof...(chars); }
...
std::cout << 12345566_call;
Run Code Online (Sandbox Code Playgroud)
这个是不允许的:
template<char... chars>
int operator"" _call() { return sizeof...(chars); }
...
std::cout << method_call;
Run Code Online (Sandbox Code Playgroud)
?
重点是什么?
向上. 这是因为含糊不清?
谢谢.
不,它没有意义.字符串文字作为两个参数传递operator"",其中一个是大小,所以你想要的是:
size_t operator"" _call(const char*, size_t len) {
return len;
}
Run Code Online (Sandbox Code Playgroud)
标准报价时间(2.14.8.5):
5如果L是用户定义的字符串文字,则令str为没有其ud后缀的文字,并且len为str中的代码单元数(即,其长度不包括终止空字符).文字L被视为表格的调用
Run Code Online (Sandbox Code Playgroud)operator "" X (str, len)
可变参数模板形式仅适用于用户定义的整数文字(2.14.8.3)和用户定义的浮动文字(2.14.8.4).
至于method_call,method不是文字.