阅读有关用户定义的文字,并发现它对从char[]
.
绝对正确的方法是这样的
std::string operator "" _s (const char* m, std::size_t)
{
return std::string(m);
}
int main()
{
std::string r = "hello,"_s + " world"_s;
return 0;
}
但实际上类似的东西的类型"hello"
是const char (&)[N]
(N
长度在哪里)。所以我想知道是否有这样的替代方法
template <std::size_t N>
std::string operator "" _s (const char (&m)[N])
{
return std::string(m);
}
但是哎呀编译器(Ubuntu 14.04 中的 g++4.8)给了我一个错误
‘std::string operator"" _s(const char (&)[N])’ has invalid argument list
std::string operator "" _s (char const (&m)[N])
^
然后我尝试std::size_t
从正确的方式()中删除未使用的参数,std::string operator "" _s (const char* m)
但得到了错误
unable to find string literal operator ‘operator"" _s’ with ‘const char [7]’, ‘long unsigned int’ arguments
std::string r = "hello,"_s + " world"_s;
char[]
那么当主要文字是 a或 a时,是否必须将长度作为参数wchar_t[]
?