int64_t的整数类型不明确性
Integer type ambiguity for int64_t
#include <stdint.h>
class Something { ...
void put(int32_t value, int32_t scale = 0);
void put(int64_t value, int32_t scale = 0);
void put(bool value);
};
对something.put(4LL)
的呼吁是模棱两可的。如何定义int64_t使其不是长整型常量的完美匹配,这就是错误消息告诉我的?
int64_t
是某些预定义类型的typedef(即别名)。 它可以是long long int
,或者long int
,甚至int
如果类型int
恰好是64位。
重载解析基于参数的类型,而不是其值或大小。即使long long
和int64_t
具有完全相同的大小和表示形式(因为它们很可能如此),它们仍然是不同的类型。 4LL
属于 long long
型;可能与int64_t
的类型相同,也可能不同。
如果要调用int64_t
值为 4
的 put()
,则需要确保参数的类型正确。例如:
const int64_t arg = 4;
put(arg);
或
put(int64_t(4));
相关文章:
- Visual C++(VS2017)中用户定义的转换不明确
- 尽管显式声明了返回类型,但对lambda的调用是不明确的
- C++ 函数重载不明确,没有自动类型转换
- 为什么 int 对象和函数类型之间不明确?
- 重载运算符'<<'的使用不明确(操作数类型'ostream'(也称为"basic_ostream<char>")和"Person")
- 循环依赖(类对类型定义,类型定义对类),前向声明给出不明确的调用
- 解析一般CSV读取功能时,如何处理不同的数据类型?(不明确指定它们)
- 使用类型标签时C++函数不明确
- 重载运算符'>>'的使用不明确(操作数类型'istream'(又名"basic_istream<char>")和"MyIncreEx")
- 与auto_ptr声明不同,当unique_ptr声明的模板类型不完整时,它是否是明确定义的?
- 对Cocos2d-x大小类型的引用不明确
- 依赖类型不明确的 c++11 可变参数函数模板重载是否不明确
- 当将不相关类型定义为别名时,对函数的调用是不明确的
- 为什么这个函数重载与参数类型转换不明确
- 传递给template函数的两个lambda使得参数的类型推导不明确——为什么
- c++类型定义不明确
- 类型转换/提升不明确
- 可转换的类型和不明确的调用
- int64_t的整数类型不明确性
- 错误:不明确的默认类型转换(c++)