繁体   English   中英

在 std::unique_ptr 下移动值

[英]Move value under std::unique_ptr

我有一个 function foo(T value) ,其中T是只移动的。 我想(出于某些原因)分配T类型的value并调用foo

我可以这样做吗?

{
  std::unique_ptr<T> ptr = make_unique<T>(T());
  foo(std::move(*ptr));
}

如果不清楚:我想在这段代码中去掉newdelete

void ServeForever(uint16_t port) {
  Acceptor acceptor;
  acceptor.BindTo(port).ExpectOk();
  acceptor.Listen().ExpectOk();
  while (true) {
    Socket* socket = new Socket(acceptor.Accept());
    Spawn([socket]() {
      HandleClient(std::move(*socket));
      delete socket;
    }).Detach();
  }
}

根本没有理由涉及指针:

void HandleCLient(Socket socket){
    //...
}

//...

while (true) {
    //Construct in-place
    Spawn([s=Socket(acceptor.Accept)]() mutable
    {
      HandleClient(std::move(s));
    }).Detach();
}

感谢@rafix07 指出需要添加mutable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM