【发布时间】:2015-04-30 07:02:32
【问题描述】:
我有一个关于 c++ 函数匹配优先级的简单问题。假设我有这样的代码:
#include <iostream>
void func(const char*)
{
std::cout << "const char*" << std::endl;
}
template<int N>
void func(const char (&) [N])
{
std::cout << "const char (&) [N]" << std::endl;
}
int main(int argc, char* argv[])
{
func("Hello world");
return 0;
}
代码的结果是(带Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)):
const char*
我认为"Hello world" 的字面量类型应该是const char[]。为什么const char* 版本的优先级高于const char (&)[] 版本?
【问题讨论】: