【问题标题】:User defined integer literal not found未找到用户定义的整数文字
【发布时间】:2018-08-04 09:53:16
【问题描述】:

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

找不到数字文字运算符“operator”“_uint”

当叮当声告诉我

错误:没有匹配的文字运算符用于调用 'operator""_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 上看到的,这给出了上述错误。

【问题讨论】:

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


    【解决方案1】:

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

    OP 中的一个专门用于字符串文字,不适用于整数。取而代之的是整数的“后备”版本,它只需要一个 const char* 而没有第二个 std::size_t 参数:

    #include <cinttypes>
    
    unsigned int operator"" _uint(char const *) { return 0; }
    
    int main() {
        return 1_uint;
    }
    

    适用于ideone

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多