Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用户定义的文字与uint64\t参数组合_C++_C++14_User Defined Literals - Fatal编程技术网

C++ 用户定义的文字与uint64\t参数组合

C++ 用户定义的文字与uint64\t参数组合,c++,c++14,user-defined-literals,C++,C++14,User Defined Literals,我刚刚偶然发现了以下用户定义的文字: #include <cstdint> constexpr auto operator""_G(uint64_t v) { return v * 1'000'000'000ULL; } 这个定义是通过运行gcc-dM-E一个空文件.c | grep“uuuuint64_uuuuuutype” 当然,将uint64\u t替换为无符号long-long-int可以避免编译错误。但这两种类型在LP64数据模型上是相同的 默认情况下不应该这样吗 默认

我刚刚偶然发现了以下用户定义的文字:

#include <cstdint>

constexpr auto operator""_G(uint64_t v) { return v * 1'000'000'000ULL; }
这个定义是通过运行
gcc-dM-E一个空文件.c | grep“uuuuint64_uuuuuutype”

当然,将
uint64\u t
替换为
无符号long-long-int
可以避免编译错误。但这两种类型在LP64数据模型上是相同的

默认情况下不应该这样吗

默认情况下不应该这样吗

没有。该标准要求用户定义的文本类型为
无符号long-long-int
。长无符号int不是一回事,它是它自己独特的类型。即使它们具有完全相同的属性,
std::is\u same\u v
也为false

如果要将整数作为文本,则必须使用
无符号long long int
类型。

静态断言(std::is_same_v)触发器。
#define __UINT64_TYPE__ long unsigned int;