相关疑难解决方法(0)

带有双参数的C++ 11运算符""

考虑:

struct str {};

str operator"" _X(long double d) {
    return str();
}
Run Code Online (Sandbox Code Playgroud)

用g ++ 4.7.2 Wall std = c ++ 11编译好

但现在如果我给双倍:

str operator"" _X(double d) {
    return str();
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:main.cpp | 3 | error:'str operator""_ X(double)'具有无效的参数列表

问题是什么 ?这与"不可能重新定义内置文字后缀的含义"(Stroustrup FAQ)有关吗?你能想到一个解决方法吗?

c++ literals c++11

29
推荐指数
2
解决办法
5943
查看次数

为什么这个用户定义的文字不起作用?

以下内容不适用于G ++ 4.8.1或4.9:

constexpr double operator"" _sig (double sig)                               
{                                                                           
    return sig * 2.0;                                                      
}
Run Code Online (Sandbox Code Playgroud)

prog.cpp:4:49:错误:'constexpr double operator""_ sig(double)'具有无效参数列表constexpr double operator""_sig(double sig)

奇怪的是,以下确实有效:

constexpr long double operator"" _sig (long double sig)                               
{                                                                           
    return sig * 2.0;                                                      
}   
Run Code Online (Sandbox Code Playgroud)

为什么??

c++ c++11

6
推荐指数
0
解决办法
90
查看次数

标签 统计

c++ ×2

c++11 ×2

literals ×1