Списки инициализаторов и RHS операторов

Я не понимаю, почему списки инициализаторов нельзя использовать в RHS оператора. Рассмотрим:

class foo { };

struct bar
{
    template<typename... T>
    bar(T const&...) { }
};

foo& operator<<(foo& f, bar const&) { return f; }

int main()
{
    foo baz;
    baz << {1, -2, "foo", 4, 5};

    return 0;
}

Последний Clang (gcc также )жалуется:

clang.cc:14:9: error: initializer list cannot be used on the right hand side of operator '<<'
    baz << {1, -2, "foo", 4, 5};
    ^  ~~~~~~~~~~~~~~~~~~~~

    ^  ~~~~~~~~~~~~~~~

Почему стандарт C++ запрещает это? Или, другими словами, почему это терпит неудачу, а не

baz << bar{1, -2, "foo", 4, 5};

?

41
задан mavam 10 July 2012 в 19:46
поделиться