Usando lista init de matriz como temporária em C ++ 11?

Eu posso criar uma variável nomeada com uma matriz da seguinte forma:

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

No entanto, o seguinte não funciona:

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

Existe alguma maneira de especificar uma matriz sem nome temporária com uma lista inicializadora? (Nesse caso, um literal de string funcionaria, mas para matrizes que não sejam matrizes de char?)

Atualizar:

#include <iostream>
#include <cstring>

using namespace std;

typedef char CA[];

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

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

Atualização 2:

Eu acho que (talvez) o que está acontecendo é que os literais de string são especialmente abençoadoslvalores, no entanto, as matrizes temporárias sãovalorese, como tal, você não pode tomar seu endereço. Este é um palpite, mas não tenho certeza.

Atualização 3:

Na verdade isso deve estar errado, eu acho:

Um lvalue ou rvalue do tipo “array de N T” ou “array de bound desconhecido de T” pode ser convertido em um prvalue do tipo “pointer to T”. O resultado é um ponteiro para o primeiro elemento da matriz.

questionAnswers(3)

yourAnswerToTheQuestion