¿Usando el array init list como temporal en C ++ 11?

Puedo crear una variable con nombre con una matriz de la siguiente manera:

char s[] = {1, 2, 3, 0};
if (strcmp(s, t))
    ...

Sin embargo, lo siguiente no funciona:

if (strcmp(char[]{1,2,3,0}, t))
    ...

¿Hay alguna manera de especificar una matriz temporal sin nombre con una lista de inicializador? (En este caso, un literal de cadena funcionaría, pero para matrices distintas de las matrices de caracteres?)

Actualizar:

#include <iostream>
#include <cstring>

using namespace std;

typedef char CA[];

int main()
{
        cout << CA{1,2,3, 0} << endl;
}

daerror: taking address of temporary array (g++-4.7.2 -std=gnu++11)

Actualización 2:

Creo que (tal vez) lo que está sucediendo es que los literales de cadena están especialmente bendecidos comovaloresSin embargo, los arreglos temporales sonprvalores, y como tal no puedes tomar su direccion. Esta es una suposición salvaje, sin embargo, no estoy seguro.

Actualización 3:

En realidad eso debería estar mal creo:

Un lvalue o rvalue de tipo "matriz de N T" o "matriz de límite desconocido de T" se puede convertir en un valor predeterminado de tipo "puntero a T". El resultado es un puntero al primer elemento de la matriz.

Respuestas a la pregunta(3)

Su respuesta a la pregunta