gpt4 book ai didi

c++ - 在 C++11 STL 之前模拟大括号列表初始化

转载 作者:行者123 更新时间:2023-11-30 03:33:39 25 4
gpt4 key购买 nike

在 C++11 之前的标准库中,是否有任何方法可以从类似 std::initializer_list 的对象创建类构造函数,这在像 这样的花括号列表初始化时会起作用std::initializer_list 可以吗?

可以使用 C++11(甚至 C++14)语言特性。但是,对于某些项目,我仍在 Xcode 上使用 libstdc++,它不支持 C++11,因为我需要支持 OS X 10.6。

最佳答案

您的问题是您将 C++11 作为语言功能,但标准库不支持它。所以你在问是否可以从 initializer_lists 构造容器。

是的,但不会使用相同的语法。这个功能就足够了:

template<typename Container>
Container from_list(std::initializer_list<typename Container::value_type> il)
{
return Container(il.begin(), il.end());
}

auto vec = from_list<std::vector<int>>({1, 2, 3, 4, 5});

标准库容器具有使用迭代器对的构造函数。所以这应该适用于任何此类容器。

但是,这假定标准库实际上具有 initializer_list 类型。如果没有,那你就不走运了。

关于c++ - 在 C++11 STL 之前模拟大括号列表初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42675632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com