考虑:
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)有关吗?你能想到一个解决方法吗?
正如我从已发现此信息是允许用户定义的文本类型的参数类型,如下所示:
const char*
unsigned long long int
long double
char
wchar_t
char16_t
char32_t
const char*, std::size_t
const wchar_t*, std::size_t
const char16_t*, std::size_t
const char32_t*, std::size_t
Run Code Online (Sandbox Code Playgroud)
好吧,我在该列表中看到的唯一有符号整数是char,它太小了.如果我想做这样的事情怎么办?
str operator"" _i(int i) {
return i*2;
}
Run Code Online (Sandbox Code Playgroud)
然后,当我写作时,-1000_i我希望得到-2000.我该怎么做呢?