任何人都可以帮助我理解以下代码
#include <iostream>
void foo(const char * c)
{
std::cout << "const char *" << std::endl;
}
template <size_t N>
void foo(const char (&t) [N])
{
std::cout << "array ref" << std::endl;
std::cout << sizeof(t) << std::endl;
}
int main()
{
const char t[34] = {'1'};
foo(t);
char d[34] = {'1'};
foo(d);
}
Run Code Online (Sandbox Code Playgroud)
输出是
const char *
array ref
34
Run Code Online (Sandbox Code Playgroud)
为什么第一个foo调用const char *版本?如何让它调用参考版本?
c++ ×1