clang 上的预期歧义错误不存在

Expected ambiguity error on clang is not present

这几乎不需要解释,但我希望从以下 C++ 代码中得到一个 歧义错误 ,但是我的编译器给了我不同的结果,这些结果显然不属于标准。

环境:

#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 兼容性。