使用C++x11时make_shared能够完美转发构造函数参数的编译器测试
在C++11中,introduces std::make_shared(), 它可以在 heap 上分配对象内存并构造对象,并返回一个指向该对象的 shared_ptr 智能指针。由于 make_shared 采用单块内存来同时分配对象和控制块,因此可以显著降低内存碎片。而且使用make_shared可以潜在地提高性能。
当我们使用make_shared来构造一个对象时,需要将构造函数的参数传递给函数。在直接传递构造函数参数时,需要进行优化,以避免容易出现的拷贝和移动操作。在这里,我们可以使用完美转发来解决这个问题。
为了验证make_shared能够完美转发构造函数参数,我们编写了以下的测试程序:
#include <iostream>
#include <memory>