我试图理解当前C++ 14标准关于解决模糊函数调用的内容,主要是因为我看到了GCC 4.9.1和Visual Studio 2013更新3之间的区别
这是代码(MS和GCC完全相同):
#include <iostream>
using namespace std;
void f(char *str, int chars) { cout << "f(char*, int)"; }
void f(char *first, char *second) { cout << "f(char*, char*)"; }
int main()
{
char *hello = "Hello, World";
f(hello, NULL); //which f gets called?
char c; cin.get(c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio调用f(char*, int)使用默认vs标志GCC给我一个编译器错误:调用重载'f(char*&,NULL)'是不明确的.gcc只使用-std=c++11标志.