У меня есть простой вопрос о приоритете соответствия функции С++. Предположим, что у меня такой код:
#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 (&)[]
?