惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
月光博客
月光博客
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
雷峰网
雷峰网
博客园 - 叶小钗
量子位
IT之家
IT之家

博客园 - keleman

lambda 如何捕获 所在子线程ID 配置 git 到达 通过 git &&ssh 登录 gitee.com 和 github.com 整理于豆包问答,测试可以实现 由QThread::currentThread()引出的 如何在线程中安全运行任务 由豆包整理的 持有 std::unique_ptr 的 lambda → 不能放进 std::function 从豆包整理 C++ Lambda 捕获方式・安全写法速查表 整理自豆包 C++14 Lambda 相比 C++11 的核心改进 firefox 149 在 linux mint 21 上的 mozillia 源安装 qt GUI 如何利用q thread 和qfuturwatcher 实现 不阻塞主线程? xargs 和管道 |的区别 一加5t的volte怎么设置 做上位机软件设计 下位机软件设计 qt 将槽函数在子线程中执行的方法 以二级指针作为函数参数,并从函数中分配空间的原理 std::forward<T> ,std::move 使用场景的区别 postEvent 和 sendEvent的区别 QObject Event( )customEvent( ) 函数区别 关于实际项目中必要的几个文件操作接口 QwaitCondition.的工作原理 【Debian】更换软件 源出现的Certificate问题解决方法 linux PS1 提示符的颜色设置 python 的几个常用的函数 知识点 设置 docker 国内的 映像加速器 docker 容器安装软件 docke 容器设置代理 docker 安装问题
VS2017 设置 类模板参数推导(CTAD, Class Template Argument...
keleman · 2024-12-02 · via 博客园 - keleman

''#include
std::mutex m_mutex;
...
std::lock_guard lock(m_mutex); //A
..

以上代码编译 提示 C2955 ,没有模板参数

改为
std::lock_guardstd::mutex lock(m_mutex); 编译成功

但是 有的代码 用A处的写法,编译就成功。
原因
虽然 C++17 引入了类模板参数推导(CTAD, Class Template Argument Deduction),使得在某些情况下可以省略模板参数
但 std::lock_guard 并不是一个支持 CTAD 的类模板。因此,你需要显式指定模板参数
在 Visual Studio 2017 中,默认情况下是支持 C++17 标准的,因此类模板参数推导(CTAD, Class Template Argument Deduction)是可用的。你不需要特别设置来启用 CTAD。
然而,如果你遇到问题,可能是因为你的项目配置没有启用 C++17 标准。你可以通过以下步骤来确保你的项目使用 C++17 标准:
设置步骤
步骤 1:打开项目属性
在 Visual Studio 中,右键点击你的项目,然后选择“属性”。
步骤 2:设置 C++ 语言标准
在左侧的树形菜单中,选择“配置属性” -> “C/C++” -> “语言”。
在右侧的“C++ 语言标准”下拉菜单中,选择“ISO C++17 标准 (/std:c++17)”。
步骤 3:应用更改
点击“应用”按钮,然后点击“确定”按钮。