猿问

操作符的初始列表和RHS

操作符的初始列表和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};

?


慕姐8265434
浏览 498回答 2
2回答
随时随地看视频慕课网APP
我要回答