C ++ 14是2014年批准的C ++标准的名称。它基于以前的C ++ 11标准,改进了核心语言和标准库并添加了一些功能。
我的结构如下: 模板 类模板类 { ... }; 模板 类 UsesTemplateClass { 民众: UsesTemplateClass( TClass...
如果在其他人提供的库的标头中附加更多枚举是否有任何潜在问题?
如果在其他人提供的共享库的标头中附加更多枚举,我应该注意什么潜在问题吗?该库的代码无法修改...
有没有办法使用基于范围的 for 循环迭代最多 N 个元素?
有没有一种很好的方法可以使用基于范围的 for 循环和/或标准库中的算法来迭代容器中最多 N 个元素(这就是重点,我知道我可以使用 &qu...
如何在表达式中触发 std::shared_ptr 的 bool 运算符(即 `bool is_empty = cur_front_res && cur_back_res;` )?
既然cur_front_res和cur_back_res都是shared_ptr,那么std::shared_ptr的bool运算符如何在表达式中触发(即bool is_empty = cur_front_res && cur_back_res;)?...
如何初始化 std::pair 的 constexpr std::array <int, const char[]>?
在 C++14 中,如何初始化包含文本字符串的 std::pair 的全局 constexpr std::array?以下不起作用: #包括 constexpr std::array 在 C++14 中,如何初始化包含文本字符串的 std::array 的全局 constexpr std::pair?以下不起作用: #include <array> constexpr std::array<std::pair<int, const char[]>, 3> strings = { {0, "Int"}, {1, "Float"}, {2, "Bool"}}; 你就快到了。首先,char const[]类型需要是一个指针,因为它是一个不完整的类型,可能无法保存在std::pair中。其次,你缺少一对牙套。正确的声明将如下所示: constexpr std::array<std::pair<int, const char*>, 3> strings = {{ {0, "Int"}, {1, "Float"}, {2, "Bool"}, }}; 需要额外的大括号,因为 std::array 是保存原始 C 数组的聚合,因此我们需要显式提到的大括号,以便 {0, "Int"} 不会被错误地视为内部数组对象的初始化程序。 C++20 中的另一种选择是使用 std::to_array,它允许您创建一个不需要预先指定大小的数组。 constexpr auto strings = std::to_array<std::pair<int, const char*>>({ {0, "Int"}, {1, "Float"}, {2, "Bool"}, });
当共享托管对象永远不会同时被评估时,在生产者和消费者之间使用 std::shared_ptr 是否安全?
下面是演示代码片段。 由于 std::shared_ptr 本身是线程安全的并且托管对象永远不会被生产者和消费者同时访问,因此可以删除互斥锁吗? #
我正在尝试解析这个命令模板,它可以采用以下内容: SendCmd SomeCommand Left_Side = "某些值"; SendCmd AnotherCmd "Some Literal" = Some_Value; SendCmd Anot...
c++14 std::experimental::filesystem::v1 和 c++17 std::filesystem 之间的区别?
我找到了这个页面,描述了c++14和c++17之间的变化: https://isocpp.org/files/papers/p0636r0.html ...它链接到此页面,该页面描述了建议的文件系统更改: http://...
std::is_void 的描述指出: 提供等于 true 的成员常量值,如果 T 的类型为 void、const void、volatile void,或 const 挥发性无效。 那会是什么
可以使用 std::ignore 来丢弃函数的返回值以避免任何相关的编译器警告吗?
我知道你可以使用static_cast,但它对我来说似乎太冗长了,没有反映最初的意图,我想丢弃返回值,而不是将其转换为任何东西。接收...
我能找到的 C++14 的最后一个草案说,关于 main() [3.6.1]: 实现不应预定义主函数。该函数不得超载。一定会有回报
正如预期的那样,以下内容在 C++11 中失败,因为该语言没有 bog 标准函数的返回类型推导: 自动主函数() { 返回0; } 然而,C++14 确实如此,所以我无法解释...
我不明白为什么?我认为兼容性不应该是一个问题,因为在没有说明符的情况下声明的函数实际上将其隐式定义为 false。如果是关于名称修改 - 我们可以
以下哪些模仿 C++17 之前的折叠表达式的技术被认为是惯用的?
C++11 和 C++14 中的折叠式表达式:惯用方法? Q&A Variadic 模板包扩展的公认答案使用了常见的 pre-C++17(折叠表达式之前)appro...
为什么在 C++ 中选择加入异构 std::*map 查找? [重复]
为了支持 std::map 的异构键查找,必须比过去更详细一点:(取自如何做到这一点的问题) int main() { { put("C++11...
最近我了解了函数的引用限定符,例如 结构体foo { 无效栏(){} 无效 bar1() & {} 无效 bar2() && {} }; 我哪里可能需要这个功能,有没有
在 C++ 中删除构造函数的最佳实践是什么:将其放在 private/protected/public 中?: 方法一: 类 Foo{ 民众: Foo() = 删除; } 方法2: 类 Foo{ 受保护: Foo() = 删除; }
考虑以下代码片段: 自动 f() { 返回 void({}); } int main() { f(); } void({}) 中的 {} 到底是什么? 它是如何解释的? 当然,只是出于好奇。让我们走得更远吧
std::forward() 的右值引用重载的目的是什么? [重复]
我正在尝试完美转发,我发现 std::forward() 需要两个重载: 过载编号1: 模板 内联 T&& 转发(类型名称 std::remove_refere...
例如,我有一个名为 Vector 的类,表示向量,还有一个名为 Integer 的类,表示整数。 类整数{ 民众: 整数(int v):value_(v){}; 私人的: int 值...