In soldoni in C una stringa è un'array di char... MA c'è un ma...
Codice:
void main(void)
{
char stringa1[] = "pippo";
char* stringa2 = "pippo";
printf("Length: %u\n", sizeof(stringa1)); // stampa 6 (la lunghezza di pippo + terminatore)
printf("Length: %u\n", sizeof(stringa1)); // stampa 4 o 8 (la dimensione di un ptr a 32 o 64 bit)
return 0;
}
Penso che quel costruttore sia in grado di accettare solo stringhe dichiarate nel primo modo in maniera da riconoscere la dimensione a tempo di compilazione.
Dimensione che il compilatore usa come parametro implicito per costruire una funzione "concreta" a partire dal template.
(In pratica puoi omettere la variabile template quando chiami il costruttore perché viene "inferita" dal parametro)
C'è da dire che è la prima volta che vedo:
Codice:
... funzione( tipo (&a)[N] )
Se usi a[N] anziché (&a)[N] mi sa che non funziona...
C/C++ riescono sempre a sorprendere

.