#include <iostream>
using namespace std;
void f(const char* arg)
{
cout << "arg is a pointer" << endl;
}
template<size_t N>
void f(const char (&arg)[N])
{
cout << "arg is an array." << endl;
}
int main()
{
f("");
}
내 컴파일러는 3.8입니다.왜 clang은 문자열 리터럴을 배열이 아닌 포인터로 사용합니까?
출력은 :
ARG 포인터 cppreference.com에 따른 그러나
,
리터럴 접두어가 문자열 유형이고에게 CONST 숯이다] .
왜 오버로드 해상도가 예상대로 동작하지 않습니까?
동등한 예이지만 템플릿을 추상화 한 것입니다. http://melpon.org/wandbox/permlink/0nGenu5Ysj40wS8u –
[밀접하게 관련] (https://stackoverflow.com/questions/16708307/is-it-possible-to) -legally-overload-a-string-literal-and-const-char), 가능한 속도. 어떻게 생각해? –