어느 한 날 다음 코드를 이해하는 데 도움이패스 참조
#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 *
버전을 호출 않습니다입니까? 참조 버전을 호출하려면 어떻게해야합니까?
출력은 msvc – Marlon
에서 나를위한'const char *, const char *'입니다. 출력은'const char *, array ref, 34'와'gcc-4.3.4' (http : //)입니다. ideone.com/ejyCS). – James
@ user511274 - 흥미로운 질문 : –