如何为有符号整数类型创建用户定义的文字?

时间:2014-05-02 14:16:54

标签: c++ c++11

正如我从this post发现的那样,用户定义的文字类型允许的参数类型如下:

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

好吧,我在该列表中看到的唯一有符​​号整数是char,它太小了。如果我想做这样的事情怎么办?

str operator"" _i(int i) {
    return i*2;
}

然后当我写-1000_i时,我希望得到-2000。我该怎么做?

1 个答案:

答案 0 :(得分:31)

没有负整数文字这样的东西。 -1000是将一元-运算符应用于文字1000

  

然后当我写-1000_i时,我希望得到-2000。我该怎么做?

定义1000_i,以便应用一元-提供-2000。例如,您可以使1000_i结构类型具有自定义重载operator-