Answers:
可替换为C ++ 11语言功能或库
<cmath>
,请参阅下面的列表
log1p
, expm1
cbrt
, hypot
acosh
,asinh
,atanh
TR1(如果它们是TR1库,则会在文档中进行标记)
从C ++ 11向后移植的功能:
可替换为C ++ 17语言功能:
<cmath>
(特殊数学IS),请参见下面的列表
标准团队仍在努力:
MPL的大部分可以使用可变参数模板进行修剪或删除。可以使用std :: to_string和std :: sto X代替Lexical cast的一些常见用例。
一些Boost库与C ++ 11相关,但也有更多扩展,例如Boost.Functional / Hash包含hash_combine和C ++ 11中未找到的相关函数,Boost.Chrono具有I / O和舍入以及许多其他时钟,等等,因此您可能仍要先查看一下增强型放大器,然后才能真正将它们消除。
std::unique_ptr
是TR1的一部分(因为它需要移动语义)
实际上,我认为Boost库不会成为传统。
是的,你应该能够使用std::type_traits
,regex
,shared_ptr
,unique_ptr
,tuple<>
,std::tie
,std::begin
而不是加速Typetraits /公用事业,助推智能指针,升压元组,升压范围库,但应该在实践中并不真的需要“开关”,除非你正将越来越多的您的代码到c ++ 11。
另外,以我的经验,其中std
大多数版本的功能都不那么出色。例如AFAICT标准并不能有
bool boost::basic_regex<>::empty()
)和其他接口的区别
基于表达式模板的惰性lambda;它们具有不可避免的好处,因为与C ++ 11相比,它们 今天可以是多态的。因此,它们通常可以更加简洁:
std::vector<int> v = {1,2,-9,3};
for (auto i : v | filtered(_arg1 >=0))
std::cout << i << "\n";
// or:
boost::for_each(v, std::cout << _arg1);
最肯定的是,它仍然比C ++ 11 lambda(具有尾随返回类型,显式捕获和声明的参数)更具吸引力。
另外,Boost扮演着BIG的角色,正是为了促进从C ++ 03到C ++ 11的路径迁移以及集成C ++ 11和C ++ 03代码库。我特别在想
boost::result_of<>
及相关)我的$ 0.02