未找到用户定义的整数文字

时间:2018-02-24 12:57:54

标签: c++ c++11 gcc clang

我正在尝试创建用户定义的文字,但在使用它时会收到错误消息。 海湾合作委员会说

  

无法找到数字文字运算符'operator"" _uint'

而clang告诉我

  

错误:没有匹配的文字运算符可以调用'运算符"" _uint'使用类型' unsigned long long'或者' const char *',并且没有匹配的文字运算符模板

我将代码缩减为以下MCVE:

#include <cinttypes>

unsigned int operator"" _uint(char const *, std::size_t) { return 0; }

int main() {
    return 1_uint;
}

您可以在ideone上看到上述错误。

1 个答案:

答案 0 :(得分:0)

正如您可以在cppreference.com上详细阅读的那样,文字运算符有许多不同的版本。

OP中的那个专门用于字符串文字,并且不能用于整数。相反,&#34;后退&#34;整数的版本,只需要const char*而没有第二个std::size_t参数:

#include <cinttypes>

unsigned int operator"" _uint(char const *) { return 0; }

int main() {
    return 1_uint;
}

适用于ideone