考虑:
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)有关吗?你能想到一个解决方法吗?
以下内容不适用于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)
为什么??