Come si può fare una cosa del genere?

codice:
template <const char *str>
class foo { /*...*/ };


// Questo ovviamente non deve funzionare...
foo <"string literal"> x;


// Ma questo dovrebbe, eppure il compilatore da errore
char str[] = "string literal";
foo <str> y;

Come posso risolvere? Grazie.