在预C ++ 11的标准库中,有没有办法从类似std::initializer_list
的对象创建类构造函数,这在使用std::initializer_list
等支持列表初始化时会起作用呢?
我可以使用C ++ 11(甚至是C ++ 14)语言功能。但是,有些项目我还在Xcode上使用libstdc ++,因为我需要支持OS X 10.6。
答案 0 :(得分:1)
您的问题是您将C ++ 11作为语言功能,但标准库不支持它。所以你问你是否可以从initializer_list
构建容器。
是的,但它的语法不同。这个功能就足够了:
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
类型。如果没有,那你就不走运了。