c++17相关内容

准备废弃 std::iterator

3 月 21 日st,标准委员会投票批准了弃用 std::iterator 在 P0174: 与简单地在类定义本身中提供预期的 typedef 相比,长长的 void 参数序列对读者来说不太清楚,这是当前工作草案所采用的方法,遵循模式设置在 c++14 之前 c++17鼓励从 std::iterator 继承 以消除迭代器样板实现中的乏味.但弃用将需要以下条件之一: 迭代器样板文 ..
发布时间:2022-01-10 14:15:40 C/C++开发

有没有比 std::remove_if 更好的替代方法来从向量中删除元素?

从 std::vector 或其他容器中删除具有特定属性的元素的任务有助于实现函数式风格:为什么要为循环、内存释放和正确移动数据而烦恼? 但是,在 C++ 中执行此操作的标准方法似乎是以下习语: std::vector整数;...插入.擦除(std::remove_if(ints.begin(),ints.end(),[](int x){return x 此示例从整数向量中删除所有小于 ..
发布时间:2022-01-07 11:49:38 C/C++开发

通过将 float 放入 int 变量进行内联 ASM 舍入的优点

我继承了一段非常有趣的代码: inline int round(float a){国际我;__asm {一个拳头我}返回我;} 我的第一个冲动是丢弃它并用 (int)std::round 替换调用(在 C++11 之前,将使用 std::lround 如果它发生在今天),但过了一段时间我开始怀疑它到底是否有一些优点...... 此函数的用例都是 [-100, 100] 中的所有值,因此即 ..
发布时间:2022-01-07 11:41:37 其他开发

C++17 之前/之后的 constexpr 静态成员

据我所知,一个很常见的情况是这样的 template班级{上市:静态 constexpr int I = i;静态 constexpr int J = constexprFunction(i);//进一步的类实现}; 几乎和我一样常见的错误(实际上我在这里的大部分问题都是因为我忘记了它并且不知道正确的问题是什么)如果成员被 odr 使用,则忘记了附加定义: templateconstexpr ..
发布时间:2022-01-05 20:04:41 C/C++开发

为什么 GCC 似乎没有文件系统标准库?

我遇到了文件系统库的问题,它应该包含在 c++17 编译器中,2 天后我尝试在 raspberry pi 中安装 gcc-7.0.2 但它没有用,它不能识别命令 gcc-7 或 g++-7 甚至 -std=c++17 所以我不得不使用 apt-get install 安装 g++-6 和 gcc-6无论如何,在安装 6 版本后,编译器包含 c++17.我使用代码块作为 IDE,我不得不添加一个新的 ..
发布时间:2022-01-05 10:30:51 C/C++开发

读取二进制文件的惯用 C++17 标准方法是什么?

通常我只会使用 C 风格的文件 IO,但我正在尝试现代 C++ 方法,包括使用 C++17 特定功能 std::byte 和 std::文件系统. 将整个文件读入内存,传统方法: #include #include char *readFileData(char *path){文件 *f;结构统计 fs;字符 *缓冲;统计(路径,&fs);buf = (char *)malloc(fs.s ..
发布时间:2022-01-04 08:25:34 C/C++开发

如何使用类似`std::basic_istream<std::byte>`

这个问题旨在将 std::byte 与标准输入输出一起使用. 是否有计划将read(_bytes) 和write(_bytes) 的适当函数重载添加到basic_istream 的接口中> 和 basic_ostream 在未来的标准中?什么理由反对它?我知道应该保留 CharT* 重载.如何使用 std::byte?我目前在我的项目功能中定义 std::istream&读取(std::i ..
发布时间:2022-01-04 08:19:06 C/C++开发

没有<可选>在 MS Visual Studio 2013 中 - 该怎么做?

我想使用 std::experimental::optional,但 MSVS 2013 告诉我它找不到标题. 为什么它不在那里? 我可以根据其他地方的代码推出自己的代码吗?也许是 C++14 提案? 解决方案 std::experimental::optional 源自 Boost.Optional 库,该实现在 Visual C++ 12.0 中运行良好(尽管它有所不同 一点) ..

C++17 并行算法是否已经实现?

我试图尝试使用 C++17 标准中提出的新并行库功能,但我无法让它工作.我尝试使用 g++ 8.1.1 和 clang++-6.0 和 -std=c++17 的最新版本进行编译,但似乎都不支持 #include 、std::execution::par 或任何类似的东西. 在查看并行算法的 cppreference 时,有一长串算法,声称 技术规范提供了来自algorithm、nume ..
发布时间:2021-12-30 20:58:01 C/C++开发

C++ 有免费的函数`size(object)`吗?

似乎大多数人找到 string 大小的方式是他们只使用 my_string.size() 并且它工作正常.嗯,我最近为我做过的班级做了一个作业... if (size(my_string) 而不是...... if (my_string.size() 但令我惊讶的是,我认为正在运行旧编译器的讲师无法运行该行代码.在我的编译器上,它是双向的,我不太确定为什么. 一个完整的程序(两者 ..
发布时间:2021-12-30 17:54:03 C/C++开发

不推荐使用的标头 <codecvt>替代品

有点前景:我的任务需要将 UTF-8 XML 文件转换为 UTF-16(当然还有适当的标头).因此,我搜索了将 UTF-8 转换为 UTF-16 的常用方法,发现应该使用 中的模板. 但是现在当它已弃用时,我想知道什么是新的常用方法同样的任务? (完全不介意使用 Boost,但除此之外,我更喜欢尽可能接近标准库.) 解决方案 std::codecvt 模板来自 本身并没有被弃用 ..
发布时间:2021-12-28 16:26:22 C/C++开发

如何在 CMake 中启用 C++17

我使用的是 VS 15.3,它支持集成的 CMake 3.8.如何在不为每个特定编译器编写标志的情况下以 C++17 为目标?我当前的全局设置不起作用: # https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html设置(CMAKE_CXX_STANDARD 17)设置(CMAKE_CXX_STANDARD_REQUIRED ON ..
发布时间:2021-12-26 21:49:29 C/C++开发

std::variant 和 boost::variant 有什么区别?

在这个 SO 问题的答案中: C++ 标准库中 boost::variant 的等价物是什么? 提到boost::variant和std::variant有些不同. 就使用这些类的人而言,有什么区别? 委员会表示采用具有这些差异的 std::variant 的动机是什么? 使用其中任何一个进行编码时我应该注意什么,以保持切换到另一个的最大兼容性? (动机是在 C++17 ..
发布时间:2021-12-24 15:17:27 C/C++开发