簡體   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