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

推荐订阅源

G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
A
About on SuperTechFans
量子位
Engineering at Meta
Engineering at Meta
B
Blog
The Cloudflare Blog
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
J
Java Code Geeks
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏
T
Tailwind CSS Blog
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 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:应用更改
点击“应用”按钮,然后点击“确定”按钮。