C++ 11/14/17确实支持"auto new"

rav*_*ang 0 c++

声明一个像as一样的指针

CAMArrayRefHash<AMPSDK::H264Video::SEQ_PARAMETER_SET_RBSP>* h264_sps;
Run Code Online (Sandbox Code Playgroud)

最后为它创建一个实例:

h264_sps = new CAMArrayRefHash<AMPSDK::H264Video::SEQ_PARAMETER_SET_RBSP>();
Run Code Online (Sandbox Code Playgroud)

在C++ 11/14/17中有一个简单的方法吗?例如,auto new

h264_sps = auto new;
Run Code Online (Sandbox Code Playgroud)

Ric*_*ges 6

#include <utility>
#include <iterator>

int main()
{
  int* p;

  p = new std::decay_t<decltype(*p)>;
  p = new std::iterator_traits<decltype(p)>::value_type();
}
Run Code Online (Sandbox Code Playgroud)

或者我们可以通过模板参数推导获得创意:

#include <utility>
#include <iterator>

template<class Ptr, class...Args>
Ptr make_new(Ptr& p, Args&&...args)
{
  p = new std::decay_t<decltype(*p)>(std::forward<Args>(args)...);
  return p;
}

int main()
{
  int* p;

  // warning: initialises p  
  make_new(p);

  // initalise p and return a copy to ease use in algorithms  
  auto pcopy = make_new(p);
}
Run Code Online (Sandbox Code Playgroud)