0

阅读有关用户定义的文字,并发现它对从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[]

4

0 回答 0