std::pair當它包含不可移動的東西時,我無法弄清楚完美轉發 a 的語法。
#include <mutex>
#include <list>
#include <utility>
struct A
{
A(int x)
{
}
};
int main()
{
std::list<std::pair<std::mutex, std::mutex>> v;
v.emplace_back(); // ok
std::list<std::pair<A, A>> v2;
v2.emplace_back(3, 4); // ok
std::list<std::pair<A, std::mutex>> v3;
v3.emplace_back(3, std::forward<std::mutex>(std::mutex{})); // help
}
uj5u.com熱心網友回復:
您必須std::mutex從空引數串列中就地構造。這可以使用std::piecewise_construct建構式來完成,它允許您將兩個元素的建構式的引數轉發為std::tuples。
// for std::forward_as_tuple
#include<tuple>
// ...
v3.emplace_back(std::piecewise_construct, std::forward_as_tuple(3), std::forward_as_tuple());
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456308.html
標籤:C
上一篇:sleep_for導致緩沖效果
下一篇:服務器在發送大量資料時被中斷
