clang 上的预期歧义错误不存在
Expected ambiguity error on clang is not present
这几乎不需要解释,但我希望从以下 C++ 代码中得到一个 歧义错误 ,但是我的编译器给了我不同的结果,这些结果显然不属于标准。
环境:
- Windows
- Clang++ 版本 12.0.0
- Clang++ 目标 = x86_64-pc-windows-msvc
#include <iostream>
void print(int x) {
std::cout << "INT\n";
}
void print(double d) {
std::cout << "DOUBLE\n";
}
int main() {
print(5l); // 5l is type long, should cause ambiguity
}
输出:
INT
知道为什么会这样吗?我的编译器出于某种原因选择采用 int 的函数,而不是发出歧义错误,因为它不应该能够解析函数调用。我错过了一些转换逻辑吗?我需要打开一些 'error levels' 或类似的东西吗?或者这是编译器中的错误?谢谢
结果我不得不将 -fno-ms-compatibility
添加到我的 clang 编译器标志中以关闭 MSVC 兼容性。
这几乎不需要解释,但我希望从以下 C++ 代码中得到一个 歧义错误 ,但是我的编译器给了我不同的结果,这些结果显然不属于标准。
环境:
- Windows
- Clang++ 版本 12.0.0
- Clang++ 目标 = x86_64-pc-windows-msvc
#include <iostream>
void print(int x) {
std::cout << "INT\n";
}
void print(double d) {
std::cout << "DOUBLE\n";
}
int main() {
print(5l); // 5l is type long, should cause ambiguity
}
输出:
INT
知道为什么会这样吗?我的编译器出于某种原因选择采用 int 的函数,而不是发出歧义错误,因为它不应该能够解析函数调用。我错过了一些转换逻辑吗?我需要打开一些 'error levels' 或类似的东西吗?或者这是编译器中的错误?谢谢
结果我不得不将 -fno-ms-compatibility
添加到我的 clang 编译器标志中以关闭 MSVC 兼容性。