试图引用一个被删除的函数,VS 2015
Attempting to reference a deleted function, VS 2015
下面的代码用于编译Visual Studio 2013,但现在给出错误,在Visual Studio 2015中"试图引用已删除的函数"。
template<typename... Args>
void operator()(Args && ... args)
{
auto guard = std::lock_guard<std::mutex>(Mutex);
{
Clean();
for (auto const & listener : Listeners)
{
if(auto locked = std::get<0>(listener).lock())
std::get<1>(listener)(args...);
}
}
}
错误是第一个语句:
auto guard = std::lock_guard<std::mutex>(Mutex)
互斥对象只是一个std::互斥对象。有人能解释一下为什么这是一个错误吗?
编辑:我也得到了这里的这行代码:
auto converter = std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>>();
如果你看到这个std::lock_guard
构造函数引用,你会看到在你的声明中调用的复制构造函数被标记为已删除。
std::lock_guard<std::mutex> guard(Mutex);
相关文章:
- 为什么我的双向链表删除函数会删除多个节点?
- unique_ptr实现接口时对已删除函数的引用
- 可视代码 删除函数括号内的空格
- 从尝试引用已删除函数的矢量 C++ 中删除对象
- 试图引用已删除函数数组的相等运算符
- 双链表堆栈删除函数不起作用
- 是否需要删除函数中未使用的新结构?
- C++引用已删除函数错误
- 删除函数环境中C++输入 R 对象
- 删除函数中的对象C++
- 在 C++ 中使用删除函数的不同方式
- C++错误:C2280 - 引用已删除函数的编译器错误?
- C++,删除函数/迭代进程中定义的动态数组
- 删除函数 c++ 的读取访问冲突异常
- 如何对此自定义C 列表类实现删除函数
- 双向链表问题(特别是复制构造函数和删除函数)
- 引用 std::atomic <bool>的已删除函数错误
- 在删除函数自由度的指针后,为什么我会得到核心转储
- C++删除函数
- 返回 C++11 中已删除函数的类型