为了寻找答案,我已经浏览了一段时间,但我似乎找不到答案。所以我决定在这里特别提出这个问题。
我一直试图使用这样的东西(以及这里的变体):
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());换句话说,我想在NonCopyable中构造m_nc。这有可能吗?
发布于 2017-10-16 09:37:53
注意,nc是一个作为命名参数的lvalue,您需要将它转换为rvalue,例如通过std:移动
Host(NonCopyable&& nc) : m_nc(std::move(nc)) { }编辑
有一个最烦人的解析问题。Host h(NonCopyable());不是一个变量定义,而是一个函数声明;它声明一个名为h的函数,它返回Host,并接受带有函数指针类型的未命名参数(它不需要任何内容并返回NonCopyable)。
只需将其更改为Host h{NonCopyable()};即可。
https://stackoverflow.com/questions/46767131
复制相似问题