#include <iostream>
void hi(int x) {
std::cout << "hi\n";
}
void hi(int64_t y) {
std::cout << "hi2\n";
}
int main() {
hi(3LL);
}
为什么会抛出不明确的匹配呢?我认为它应该解析为第二个函数,因为它是一个精确匹配。或者int64_t是一个不同于3LL的类型吗?
看起来这个错误只发生在某些编译器上,即g++而不是clang。虽然不确定它是否是由不同的编译器标志或使用的版本引起的。
1条答案
按热度按时间lh80um4z1#
或者int64_t与3LL是不同的类型?
是的,
int64_t
是long
(在此实现中)。3LL
是long long
。现代IDE具有“转到定义”特性,您可以将光标放在
int64_t
上,然后转到https://github.com/lattera/glibc/blob/master/bits/stdint-intn.h#L27,再转到https://github.com/lattera/glibc/blob/master/posix/bits/types.h#L43。