c++17相关内容

C++模板-完整指南:关于decltype和return类型的脚注措辞

C++模板-完整指南第2版第436页有以下脚注(我的粗体): 不同的是,与其他上下文中的调用表达式不同,decltype(call-expression)不要求非引用、非void返回类型是完整的。而使用decltype(std::declval().begin(), 0)确实增加了调用的返回类型必须完整的要求,因为返回值不再是decltype操作数的结果。 脚注是指使用declt ..
发布时间:2022-02-25 20:16:48 C/C++开发

';仅将成员函数添加到类的专用模板

我有一个模板类,我想向模板的特定专门化添加一个特殊函数。此函数仅对std::String模板有意义。 我展示了我目前是如何处理这个问题的…问题是删除的函数仍然对所有模板类型可见,而不仅仅是我想要使用它的匹配模板。 有没有更优雅的方式来处理这种困境? template class Match { /* *Class Definition ..
发布时间:2022-02-25 20:08:04 C/C++开发

C++17中std::unary_function的等效替代是什么?

以下代码给我带来了一些问题,尝试构建并得到错误: “unary_function基类未定义”并且“unary_function”不是std的成员“ std::unary_function已在C++17中删除,那么等效版本是什么? #include struct path_sep_comp: public std::unary_function ..
发布时间:2022-02-25 20:06:12 C/C++开发

从任意嵌套的元组类型获取展平的元组类型

我希望有一个类型特征flatten_tuple_t,它可以从任意嵌套类型创建平面化元组类型。以下代码片段说明了flatten_tuple_t的预期内容。 template struct flatten_tuple { using type = T; }; // The real implementation goes here // ... // ... tem ..
发布时间:2022-02-25 20:02:50 C/C++开发

结构化绑定和转发引用能很好地混合吗?

我知道我可以做到 auto&& bla = something(); 根据something返回值的const程度,我会为bla获取不同的类型。 这是否也适用于结构化绑定的情况,例如 auto&& [bla, blabla] = something(); 我想是的(结构化绑定搭载在auto初始值设定项上,其行为如下),但我找不到明确的“是”。 更新:初步测试似乎达到 ..

C++17为什么不删除有向图和三联图呢?

C++17删除了三联图。IBM强烈反对这一点(here和here),因此似乎存在删除/不删除两边的争论。 但是既然已经决定删除三联码,为什么还要留下有向图呢?除了保留三重图(显然重量不足以保存它们)之外,我看不到任何保留有向图的理由。 推荐答案 对于不知情的用户来说,三元图比有向图更有问题。这是因为它们被替换在字符串文字和注释中。以下是一些…示例 示例A: std::st ..
发布时间:2022-02-25 19:57:09 C/C++开发

复制省略用于列表初始化,它在标准中规定在哪里?

[dcl.init]/17.6中明确写到,初始化圆括号时,会发生副本省略: 如果初始化器表达式是prvalue,并且源类型的cv非限定版本与目标的类相同,则初始化器表达式用于初始化目标对象。[ 示例:T x=T());调用T默认构造函数初始化x。 - 结束示例 ] 但是在列表初始化的情况下(上面的段落不适用),我没有发现任何类似的东西。请参见[dcl.init.list]。 那么 ..

初始化";if";语句中的变量

我读到在C++17中,我们可以在if语句中初始化变量,如下所示 if (int length = 2; length == 2) //execute something 而不是 int length = 2; if (length == 2) //do something 尽管它较短,但会影响代码的可读性(特别是对于不了解此新功能的人),我认为这对于大型软件开发 ..
发布时间:2022-02-25 19:54:45 C/C++开发

什么是聚合和 POD,它们如何/为什么特别?

此常见问题解答是关于聚合和POD的,涵盖以下材料: 什么是聚合? 什么是POD(普通旧数据)? 它们有什么关系? 它们有什么特别之处,为什么特别? C++11 有哪些变化? 解决方案 如何阅读: 这篇文章比较长.如果您想了解聚合和 POD(普通旧数据),请花时间阅读.如果您只对聚合感兴趣,请阅读第一部分.如果您只对 POD 感兴趣,那么您必须首先阅读聚合的定义、含义和示 ..
发布时间:2022-01-30 15:54:50 C/C++开发

C++1z 的范围状态?

C++ 委员会中有一个范围研究小组: 但我没有关注这个研究组的历史,我不确定 C++1z 的预期交付类型(此外我不使用 boost.range,因此我对现有的实践).我们会有: 将范围作为一对第一个/最后一个迭代器? 范围上的联合和其他集合操作(​​例如 [v.begin()+5, v.begin()+7[ U [v.begin()+10, v.begin()+15[ U[v.b ..
发布时间:2022-01-24 19:49:45 C/C++开发