通用初始化-矢量的填充构造函数

时间:2019-05-01 13:56:09

标签: c++ initialization c++17 stdvector

在c ++ 17中是否可以调用此构造函数

 vector( size_type count, const T& value, const Allocator& alloc = Allocator());

vector<int>使用统一初始化?似乎std::vector<int> data{10, 20}创建了一个大小为2的向量。

2 个答案:

答案 0 :(得分:3)

有可能吗?当然。

struct size_type {
    template<class T, std::enable_if_t<std::is_same_v<T, std::vector<int>::size_type>>* = nullptr>
    operator T() const {
        return val;
    }
    std::vector<int>::size_type val;
};

std::vector<int> vi {size_type{10}, 4}; // vector of 10 ints with value 4

只要value_typesize_type的类型不同,此方法就起作用。

您应该这样做吗?不。

答案 1 :(得分:2)

确定:

std::vector<int> vi{10, 4, std::allocator<int>()};

但是括号没有内在的错误。