Why is this considered an extended initializer list?

后端 未结 2 772
天涯浪人
天涯浪人 2021-01-17 16:35
#include 

struct foo {
    int i;
    int j;
    int k;
};

int main() {
    std::vector v(1);
    v[0] = {0, 0, 0};
    return 0;
}
         


        
2条回答
  •  旧时难觅i
    2021-01-17 17:06

    Brace-initialization for aggregates is only valid during declaration-initialization:

    Foo a = { 1, 2, 3 };
    

    It is not a way to generate temporaries midway: some_function(true, {1,2,3}, 'c').

    C++11 adds uniform initialization in which you can indeed write f(Foo{1,2,3});.

提交回复
热议问题