我已经浏览了一段时间寻找答案,但我似乎没有找到答案。所以我决定在这里专门提问。
我一直在尝试使用这样的东西(及其变体):
struct NonCopyable
{
NonCopyable() { };
NonCopyable(const NonCopyable& other) = delete;
NonCopyable(NonCopyable&& other) { };
};
struct Host
{
Host(NonCopyable&& nc) : m_nc(nc) { }
NonCopyable m_nc;
};
实现这一目标:
Host h(NonCopyable());
换句话说,我想在m_nc中构造NonCopyable。这有可能吗?
答案 0 :(得分:4)
请注意,<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<span id="myid" >{{property}}</span>
是一个左值作为命名参数,您需要将其转换为右值,例如:通过std::move
nc
修改强>
有一个most vexing parse问题。 Host(NonCopyable&& nc) : m_nc(std::move(nc)) { }
不是变量定义,而是函数声明;它声明了一个名为Host h(NonCopyable());
的函数,它返回h
并获取一个带有函数指针类型的未命名参数(它不带任何内容并返回Host
)。
只需将其更改为NonCopyable
。