In genere è possibile sfruttare la nuova sintassi di inizializzazione e la semantica per utilizzare gli array anonimi come argomenti, ma è necessario passare attraverso alcuni cicli. Per esempio
typedef const char *CC2[2];
void foo(const CC2 &a) {}
int main() {
foo({ "asd", "dsa" });
}
Tuttavia, nel tuo caso questa tecnica non aiuterà perché si richiede una conversione serie-a-puntatore su un array temporaneo.Questo è illegale in C++.
typedef int A[2];
const A &r = A{ 1, 2 }; // reference binding is OK
int *p = A{ 1, 2 }; // ERROR: taking address is not OK
Quindi, se si vuole veramente fare qualcosa di simile, è possibile effettuare le seguenti operazioni
template <size_t N> void foo(const char *const (&args)[N]) {}
int main() {
foo({ "asd", "dsa" });
}
ma che non è esattamente quello che aveva in mente in origine.
Cosa dice l'errore? –
libri mentono. spesso per rendere le cose più semplici, a volte perché l'autore non sa meglio. –
prova 'const char *' –