Может ли кто-нибудь помочь мне понять следующий код
#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);
}
Выходной сигнал
const char *
array ref
34
Почему первый foo вызывает версию const char *
? Как я могу заставить его вызвать эталонную версию?