如何在c 11中定义否定UDL(它们是否被禁止?)?

我甚至不确定是否允许使用负面的用户定义文字.如果没有,为什么他们被排除在外?

例如,我想使用:

auto money_i_owe_jack = -52_jpy;

这是我尝试使用gcc 4.7.2:

constexpr int64_t operator "" _jpy(long long l)
{
  return static_cast<int64_t>(l);
}

错误

Test_udl.cpp:60:47: error: ‘constexpr int64_t operator"" _jpy(long long int)’ has invalid argument list

解决方法

整数文字需要被接受为unsigned long long.负号不是文字的一部分,它是在事实之后应用于返回的值.
constexpr int64_t operator "" _jpy(unsigned long long l)
{
  return static_cast<int64_t>(l);
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...