#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("");
}
Mon compilateur est clang 3.8.Pourquoi clang prend-il un littéral de chaîne comme un pointeur plutôt qu'un tableau?
La sortie est la suivante:
arg est un pointeur
Toutefois, selon cppreference.com,
Le type d'un est const char littéral chaîne sans préfixe [] .
Pourquoi la résolution de surcharge ne se comporte-t-elle pas comme prévu?
Exemple équivalent, mais abstraction du modèle: http://melpon.org/wandbox/permlink/0nGenu5Ysj40wS8u –
[Étroitement lié] (https://stackoverflow.com/questions/16708307/is-it-possible-to -galally-overload-a-string-literal-et-const-char), dupe possible. Qu'est-ce que tu penses? –