Почему я не могу инициализировать ссылку в списке инициализаторов с помощью юниформ-инициализации?

То есть, почему это:

struct S {};

struct T
{
    T(S& s) : s{s} {}

    S& s;
};

int main()
{
    S s;
    T t{s};
}

выдает ошибку компилятора с GCC 4.7:

test.cpp: In constructor 'T::T(S&)':
test.cpp:5:18: error: invalid initialization of non-const reference of type 'S&' from an rvalue of type '<brace-enclosed initializer list>'

?

Чтобы исправить ошибку, я должен изменить s{s}на s(s). Разве это не нарушает, эээ, единообразиеуниверсальной инициализации?

РЕДАКТИРОВАТЬ: я пробовал с clang, и clang принимает его, так что, возможно, это ошибка GCC?

33
задан HC4 - reinstate Monica 9 May 2012 в 04:01
поделиться