#include <iostream>
using namespace std;
void f(const char* arg)
{
cout << "arg is a pointer" << endl;
}
template<size_t N>
void f(const char (&arg)[N])
{
cout << "arg is an array." << endl;
}
int main()
{
f("");
}
我的编译器是clang 3.8。
输出结果为:
arg是一个指针
然而,根据cppreference.com,
未加前缀的字符串文字的类型是const char[]。
为什么重载决议没有按预期行为?