【问题标题】:User-defined literals用户定义的文字
【发布时间】:2021-11-29 01:31:21
【问题描述】:

在 cppreference.com 上的"User-defined literals" 中,这是什么意思?

b) 否则,重载集必须包含原始文字运算符或数字文字运算符模板中的一个,但不能同时包含两者。如果重载集包含原始文字运算符,则用户定义的文字表达式被视为函数调用operator "" X("n")

拜托,我需要一个简单的例子来说明这段文字。

【问题讨论】:

  • 示例在同一页中...见第 4 点后的方框。

标签: c++ user-defined-literals


【解决方案1】:

unsigned long long operator "" _w(unsigned long long);
unsigned operator "" _u(const char*);

int main() {
    12_w; // calls operator "" _w(12ULL)
    12_u; // calls operator "" _u("12")
}

根据您链接中的示例进行一些更改。

这里12_w 调用operator "" _w(12ULL),因为有参数类型为unsigned long long 的文字运算符,而12_u 调用operator "" _u("12"),因为只有原始文字运算符

【讨论】:

  • 我可以选择除 unsigned 以外的任何返回类型吗?
  • @ahmedmokhtar 当然,这取决于你如何实现它。返回类型没有限制。
猜你喜欢
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2022-01-08
  • 1970-01-01
  • 2011-07-19
相关资源
最近更新 更多