草庐IT

c++ - C++11 是否支持 C11 的新特性?

我最近在C11中进行了探索,许多新功能使我可以更轻松地使用C编写代码。我想知道C++11是否正式支持所有这些功能。我关心的不是实现或编译器问题,而是新的C++标准。 最佳答案 不,C++11不支持C11的所有特性。它甚至不支持C99的所有功能。例如,可变长度数组是在C99中引入的,但C++尚不支持它们。参见thisquestion了解详情。 关于c++-C++11是否支持C11的新特性?,我们在StackOverflow上找到一个类似的问题: https://

c++ - C++11 中可变参数模板的函数组合

我是一名数学家,长期以来一直在进行“旧式”C++编程。我觉得C++11提供的一些新语法结构可以帮助我在我的专业项目中获得更好的代码。然而,由于我不是CS专业人士,我必须承认我缺乏理解我在自学过程中遇到的一些例子的知识,尽管到目前为止我已经很幸运/成功了。我的印象是可变参数模板可用于实现类型安全的函数组合,如thisquestion.我的担心稍微更笼统一些,因为我想用异构(但兼容)的参数/返回类型来组合函数。我用谷歌搜索了很多,发现anotherreference,但对我来说这似乎完全是“黑魔法”;)而且我不会假装我可以在我的上下文中调整代码,尽管我觉得我应该在那里找到我需要的东西。我认

微软证实“补丁周二”更新导致 Windows 11/10 本地账户登录出问题(附解决方法)

4月28日消息,微软已确认本月发布的补丁周二更新,给部分Windows10和Windows11的用户带来了麻烦。这些用户在使用本地账户登录时,会看到一条提示,说“您的数据将在您所在的国家或地区之外进行处理”。这个问题只影响教育版和企业版的Windows10和Windows11,不是所有的客户端设备都会出现。微软在其支持文章中解释了这个问题的原因和解决办法。根据文章,这个问题是由于2023年3月21日或之后的Windows更新引起的。除了此通知,还会显示Microsoft隐私声明对话框。如果一个企业想要屏蔽这个提示,需要在安装更新之前,在每个本地账户的注册表中创建一个条目。IT之家附具体的操作步

c++ - const 引用是错误的 C++ 11

我在YouTube上观看BjarneStroustrup,我试图弄清楚为什么这被认为是糟糕的,因为他说这是C++98风格的糟糕代码voidsetInt(constunsignedint&i)voidtakeaString(conststd::string&str)我的意思是你正在传递一个对常量的引用,这样你就可以省去复制操作,而且它甚至不像传递指针那样使用,所以它不必取消引用,所以为什么不好? 最佳答案 在C++11之前的版本中,一般的经验法则是如果您不修改参数,则按值传递内置类型,并按const&传递类或结构的对象,因为类或结构的

C++1y/C++14 : Converting static constexpr array to non-type template parameter pack?

假设我有一个静态存储持续时间的constexpr数组(已知范围):constexprTinput[]=/*...*/;我有一个需要打包的输出类模板:templatestructoutput_template;我想像这样实例化output_template:usingoutput=output_template;一种方法是:templatestructmake_output_template{templatestaticconstexproutput_templatef(std::index_sequence){return{};};usingtype=decltype(f(std::m

C++11:赋值运算符是否会阻止类型被 POD,从而被全局初始化?

背景:我在一个大型代码环境中,其中运行全局构造函数的未定义顺序存在问题。所以我有一个自定义类,旨在延迟初始化直到首次使用。它所有的魔力都发生在它的operator*和operator->函数中;它们是唯一定义的东西。它还在自身内部存储一些状态,以供自动初始化功能使用。当然,那个状态必须是POD,这样整个类都是POD,这样它就可以在任何人的代码开始运行之前就完全设置好,这样所有的代码都可以在任何地方使用所有的全局变量,而不用担心全局变量没有'尚未设置。前段时间有人添加了一个私有(private)的、从未定义的赋值运算符,这样该类型就永远不会被分配给(无论如何它都不会被设计成永远改变)。现

c++ - 为什么 C++11 没有模板类型定义?

为什么C++11没有“模板类型定义”,比如templatetypedefstd::vector>vec;相反,他们只允许新语法:templateusingvec=std::vector>; 最佳答案 n1406是HerbSutter提出的“typedef模板”的提议,它模仿了您问题中的语法。n1499建议“模板别名”取代它,其中包含using当前存在于C++11中的语法。“typedef模板”的主要缺点之一在这两篇论文中都得到了解决。来自n1406:Inexistingpractice,includinginthestandardl

c++11 std::hash 函数对象类线程安全

在c++11中是在中声明的散列函数类对象线程安全?例如,从多个线程调用此函数是否安全?size_thash1(conststd::string&s){std::hashstr_hash;returnstr_hash(s);}或者,如果有一个全局对象std::hashstr_hash_global;,那么从多个线程调用第二个函数是否安全?size_thash2(conststd::string&s){returnstr_hash_global(s);} 最佳答案 标准库promise,如果您只在标准库对象上调用const限定的成员函数

C++11 线程卡在锁定互斥锁上

使用C++11std::thread、std::mutex,我正在编写一个简单的工作线程。但是,我在锁定std::mutex时遇到了一个奇怪的挂起问题,看起来两个线程(主线程和工作线程)都试图锁定互斥锁,但都被阻止了。完整代码#include#include#include#include#includestd::condition_variablecv;std::mutexm;std::threadt;boolshouldExit=false;std::listjobs;voidthread_func(){std::unique_locklock(m);while(!shouldEx

c++ - C++14 中标准布局类的定义

在C++14的[class]/7中定义了一个standard-layout类,如下(重点是我的):标准布局类是这样的类:(7.1)—没有非标准布局类型的非静态数据成员类(或此类类型的数组)或引用,(7.2)—没有虚函数(10.3)也没有虚基类(10.1),(7.3)—对所有非静态对象具有相同的访问控制(条款11)数据成员,(7.4)—没有非标准布局的基类,(7.5)—在大多数派生中没有非静态数据成员classand至多一个具有非静态数据成员的基类,或者有没有具有非静态数据成员的基类,并且(7.6)—没有与第一个非静态类型相同的基类数据成员。我关心的是关于项目符号(7.5)的问题:如何可