Initialisieren des Elements std :: array <char, x> im Konstruktor mit dem Zeichenfolgenliteral. GCC-Fehler?

Das folgende Beispiel initialisiert astd::array <char, N> Mitglied in einem Konstruktor, der ein Zeichenfolgenliteral verwendet, kompiliert nicht in GCC 4.8, sondern mit Clang 3.4.

#include <iostream>
#include <array>

struct A {
  std::array<char, 4> x; 
  A(std::array<char, 4> arr) : x(arr) {}
};


int main() {
    // works with Clang 3.4, error in GCC 4.8.
    // It should be the equivalent of "A a ({'b','u','g','\0'});"
    A a ({"bug"});
    for (std::size_t i = 0; i < a.x.size(); ++i)
        std::cout << a.x[i] << '\n';

    return 0;
}

Auf den ersten Blick sieht es aus wie ein GCC-Fehler. Ich denke, es sollte kompiliert werden, da wir ein initialisieren könnenstd::array<char, N> direkt mit einem String-Literal. Zum Beispiel:

std::array<char, 4> test = {"bug"}; //works

Mich würde interessieren, was der Standard dazu sagt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage