C ++ 17是2017年批准的C ++标准的名称。它基于以前的C ++ 14标准,改进了核心语言和标准库,并添加了一些新的语言功能。
问题 我有一个模板化函数 模板 无效 myfunc(int a) { // 使用 N 进行编译时优化的内容 } 我在编译时实例化它来为
所以,例如我有一堆文件: 根目录: 目录-a: 读取.cpp 目录-b: 代码.cpp 库文件 库文件 lib的文件: //lib.cpp #包括 使用命名空间 std; 字符串编辑(...
我一直在尝试使用 extract() 有效地取出密钥并替换它,正如文档所说是可能的。但是,我无法使用“常规”迭代器来编译我的代码,...
我刚刚阅读了有关 std::thread 和 std::bind 的内容,我遇到了 Callable 概念和 std::invoke。 我读到了关于 cppreference 的 std::invoke 但我不明白它说的是什么。哈...
我有一个如下所示的自定义类标识符,并且需要帮助来理解由于为自定义用户类标识符定义哈希函数而出现的编译时错误。班级
将 std::uint16_t 转换为 std::string_view
我想将 std::uint16_t 转换为 std::string_view。我期望以下代码能够工作: std::string_view to_str(std::uint16_t v) { 返回 std::string_view(std::to_string(v)); } 因为...
std 将 uint16_t 转换为 string_view
我想将 std::uint16_t 转换为 std::string_view。我期望以下代码能够工作: std::string_view to_str(std::uint16_t v) { 返回 std::string_view(std::to_string(v)); } 因为...
从另一个 std::vector 的连续子集创建 std::vector 的有效方法
我当前正在接收一些存储在 std::vector 中的数据,并且我正在寻找一种有效的方法来删除此向量中数据的前几个索引,其中包含一些标头
auto [ ] 语法是什么意思以及为什么它不能与 { } 一起使用[重复]
我一直以为C++17中的auto是实际数据类型的占位符,但在下面的例子中却并非如此: tuple permute(int a, int b){return {b,a};} int main(){ ...
C++ 应用程序在 Visual Studio 2022 (>= 17.10) 上的 std::minmax_element 上崩溃
最新版本的 Visual Studio C++ 编译器破坏了我们的代码。我们的应用程序使用 STL 算法(如测量样本上的 std::minmax_element)。有时设备无法提供有效的样本...
我们可以从 Base* 静态转换为 Derived*,但在我的例子中,当转换应该发生时,关系是不可见的。有没有什么技巧(当然除了reinterpret_cast)可以使它......
我正在尝试根据模板类型 T 有条件地选择 Res 类型。 条件是如果 T 具有特定的成员类型(使用 using 声明),则将 Res 设置为该成员类型。否则,设置 R...
我正在尝试运行两个线程。第一个将无限运行,另一个将在第一个上的互斥锁被清除时运行。 我不想改变代码的基本结构,比如,l...
标准库中是否定义了具有复制构造函数但没有移动构造函数的类型?
一般来说,C++ 标准库类型的设计同时考虑了复制和移动语义。 标准库中是否定义了任何具有复制构造函数但没有...
标准库中是否定义了具有复制构造函数而缺少移动构造函数的类型?
一般来说,C++ 标准库类型的设计同时考虑了复制和移动语义。标准库中是否定义了具有复制构造函数但缺乏移动的类型
下面的程序已尽可能减少以显示 Visual Studio C++ 编译器遇到的问题。 f 是一些接受输入谓词对象 P p 的算法函数,它具有用户德...
如何检测构造函数确实是 constexpr,以便我可以利用静态初始化?
看这段代码: 结构非Constexpr { 非Constexpr() { } }; 模板 结构栏{ NonConstexpr nonConstexpr; constexpr Bar() { } }; 结构体 Foo { 酒吧 看这段代码: struct NonConstexpr { NonConstexpr() { } }; template <typename T> struct Bar { NonConstexpr nonConstexpr; constexpr Bar() { } }; struct Foo { Bar<void> bar; constexpr Foo() { } }; 在这段代码中,Foo的构造函数被标记为constexpr,但它不能出现在常量表达式中,因为它实际上无法满足this的要求。您可以在我的上一个问题中阅读详细信息。 我的问题是:我能否在编译时以某种方式检测到 Foo 的构造函数实际上不会表现得像 constexpr? 我问这个的原因是,我想检测 Foo 的全局变量是否会被静态初始化(我想在上面加上 static_assert,因为我的全局 Foo 对象必须是静态初始化)。 请注意,临时将 constexpr 添加到变量的简单解决方案不起作用,因为我的 Foo 有一个不平凡的析构函数。 这在 C++20 中标准化为 constinit。 对于以前的语言版本,Clang 具有 [[clang::require_constant_initialization]] 属性,GCC 10+ 支持 __constinit 作为扩展。 据我所知,防止编译器默默删除 constexpr 的唯一(当前的、独立于工具链的)方法是分配给 constexpr: struct NonConstexpr { NonConstexpr() { } }; template <typename T> struct Bar { NonConstexpr nonConstexpr; constexpr Bar() { } }; struct Foo { Bar<void> bar; constexpr Foo() { } }; int main() { constexpr auto f = Foo(); return 0; } ...将无法通过 constexpr constructor calls non-constexpr function "Bar<T>::Bar() [with T=void]" 进行编译
#包括 使用命名空间 std; void add_numbers_to_array (int *array); int main() { int array1[] {}; int array2[] {}; 计算<< array1 << endl; cout <...
如何为一个拥有 nocopy-nomove 类型的类编写一个 ctor,其中一个类型要从另一个类型(可以是多种类型中的一种)进行 init.ed?
我从这样的场景开始: 不可复制、不可移动的类 Foo1、Foo2 和 Baz 是不可触及的 结构 Foo1 { Foo1(int); Foo1(Foo1&&) = 删除; }; // 我不能碰它 结构 Fo...
如何通过 otlp http/grpc 导出器在 C++ opentelemetry 中使用计量仪器?
在我的 C++ 项目中,我使用 opentelemetry (v1.14.2) 来收集跟踪和日志。现在我想使用仪表仪器(双可观察仪表)和 otlp http/grpc 导出器添加指标集合。我已经...