Which greedy initializer-list examples are lurking in the Standard Library?

前端 未结 2 1263
余生分开走
余生分开走 2020-12-03 01:38

Since C++11, the Standard Library containers and std::string have constructors taking an initializer-list. This constructor takes precedence over other construc

2条回答
  •  生来不讨喜
    2020-12-03 02:20

    I assume, with your examples for std::vector and std::string you meant to also cover the other containers, e.g., std::list, std::deque, etc. which have the same problem, obviously, as std::vector. Likewise, the int isn't the only type as it also applies to char, short, long and their unsigned version (possibly a few other integral types, too).

    I think there is also std::valarray but I'm not sure if T is allowed to be integral type. Actually, I think these have different semantics:

    std::valarray(0.0, 3);
    std::valarray{0.0, 3};
    

    There are a few other standard C++ class templates which take an std::initializer_list as argument but I don't think any of these has an overloaded constructor which would be used when using parenthesis instead of braces.

提交回复
热议问题