【发布时间】:2015-06-17 20:03:18
【问题描述】:
#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 是如何定义的,所以它不是 long long int 常量的完美匹配,这是错误消息告诉我的?
【问题讨论】:
-
也许
int64_t是long。 -
这里只是猜测一下,但 4LL 仍然是 4,并且 4 将适合 32 位或 64 位整数...虽然可能是错误的
-
@Thomas:与重载决议相关的是类型,而不是值。
4LL、4L和4都有相同的数学值,但它们都是不同的类型。 -
@KeithThompson 好的,这是有道理的,就像我说的不确定。有一段时间没有做任何硬核 C++ 编码了。我需要去买一本 c++11 的书,哈哈改变了很多
-
我预计这是重复的,事实上,它是;我只是找不到自己。