c++17 相关问题

C ++ 17是2017年批准的C ++标准的名称。它基于以前的C ++ 14标准,改进了核心语言和标准库,并添加了一些新的语言功能。

将可选值初始化为 null 或值的体面习惯用法?

动机 随着 C++ 获得了可选值(在 C++17 中),现在通常需要编写以下内容: 如果条件成立,则用某个表达式初始化我的变量;如果条件

回答 1 投票 0

将可选值初始化为 null 或值的好习惯用法?

动机 随着 C++ 获得了可选值(在 C++17 中),现在通常需要编写以下内容: 如果条件成立,则用某个表达式初始化我的变量;如果条件

回答 1 投票 0

带有两个模板参数的 C++ 重新绑定分配器

我正在编写一个分配器,它将对齐作为模板参数以及对齐: 模板 类 AlignedAllocator { 民众: 使用 value_type ...

回答 1 投票 0

避免 switch 情况下默认的优雅方法(使用枚举类)

我有一个枚举类,例如: 枚举类状态{ S1, S2, S3, S4 }; 每当我做出可能使用此类的 switch/case 语句时,我

回答 5 投票 0

std::move 于 std::vector 类型的 std::Optional

在 std::Optional> 上执行 std::move 是否安全?它没有给我任何编译器或运行时错误,但想知道这是否有效。这是我的示例代码

回答 1 投票 0

std::is_invocable 可以在 C++11 中模拟吗?

我想使用std::is_invocable,但是我们使用的是c++11标准,而is_invocable仅在c++17中可用。 有什么方法可以使用 c++11 模拟功能吗? 谢谢你

回答 2 投票 0

使用折叠表达式为数组实现较少运算符

我正在用最新的 clang++ 玩弄 c++17 中的折叠表达式。 我尝试使用它来实现数组的 less 运算符,我想将其用于固定大小的字符串。 这里是...

回答 2 投票 0

为什么我不应该将带有按引用捕获的 lambda 传递给 std::thread 构造函数?

我编写了一个计时器类,但它没有按照我需要的方式工作。谁能告诉我这有什么问题吗? 模板 上课定时器 { 民众: 计时器(D 时段、C&am...

回答 1 投票 0

我不知道为什么我的简单的C++定时器类不起作用

我编写了一个计时器类,但它没有按照我需要的方式工作。谁能告诉我这有什么问题吗? 模板 上课定时器 { 民众: 计时器(D 时段、C&am...

回答 1 投票 0

用于连接 string_views 的折叠表达式

我想要一个连接 string_views 的折叠表达式函数。但我尝试过的代码不起作用。我究竟做错了什么 ? 模板 我想要一个折叠表达式函数来连接 string_views。但我尝试过的代码不起作用。我做错了什么? template<typename Allocator, typename Char, typename Traits> auto sv_concat( std::basic_string_view<Char, Traits> svs ... ) { basic_string<Char, Traits, Allocator> str; str.reserve( (svs.length() + ...) ); ((str += svs), ...); return str; } 这是 clang++ 18 个错误: test.cpp:14:31: error: pack expansion does not contain any unexpanded parameter packs 14 | str.reserve( (svs.length() + ...) ); | ~~~~~~~~~~~~ ^ test.cpp:15:17: error: pack expansion does not contain any unexpanded parameter packs 15 | ((str += svs), ...); | ~~~~~~~~~~~~ ^ 您的代码中没有参数包。我将只讨论这个问题。可变参数模板可用于实现可变参数函数,非可变参数模板则不能(除了 c 省略号)。 在可变参数模板中,您可以限制模板的多种类型全部相同,或者是同一模板的所有实例。然而,让我们从更简单的开始...... 而不是 std::string,我在示例中使用了一些带有单个模板参数的 Foo。因为我知道我需要使用部分专业化,所以我使用类模板 bar 代替函数模板。 template <typename T> struct foo {}; template <typename ... T> struct bar; template <typename ...U> struct bar<foo<U>...> { void operator()() { std::cout << sizeof...(U); } }; 可以添加的其他专业化,bar只能使用作为foo实例化的类型进行实例化。 另一种途径是对特征进行部分特化: template <typename T> struct is_foo : std::false_type {}; template <typename U> struct is_foo<foo<U>> : std::true_type {}; template <typename T> constexpr bool is_foo_v = is_foo<T>::value; 并用它来限制bar。 SFINAE 因为我是老派: template <typename ... T> auto bar() -> std::enable_if_t< std::conjunction_v<is_foo<T>...> > { std::cout << sizeof...(T);} 现场演示 有了概念,你就有了更好的方法来做同样的事情,但原则上它会做同样的事情。

回答 1 投票 0

通过布尔运算扩展参数包

我尝试执行检查参数是否与特定值匹配的函数。 我认为知道如何使用递归或 std::initializer_list 来做到这一点,但我想用折叠来做到这一点。这是非工作代码:

回答 2 投票 0

如何对 C++ 类的实例列表进行排序

我正在使用 SDL2 库为 2D RPG 游戏编写 C++ 程序。我有一个名为 Entity 的类,它有一个名为 worldY 的属性: 类实体 { 民众: ... // 坐标世界:la ...

回答 1 投票 0

read()

我尝试读取作为 zip 存档一部分的二进制文件。因此我用 Poco::Zip 打开了 zip 存档。然后我按块读取二进制文件 结构头 { uint64_t 标签; uint32_t

回答 1 投票 0

使用 C 风格字符串初始化 std::string_view

std::string_view 对象仅具有对诸如 std::string 之类的对象的视图,并且修改用于初始化 string_view 的字符串的值将使该对象无效。 现在,如果我初始化一个字符串...

回答 1 投票 0

加入话题失败

我正在编写一个程序,它创建一些随机数组,然后使用两个不同的排序函数对它们进行排序。首先,我创建一个由不同大小的 Fleet 对象组成的向量。然后,对于每个舰队我

回答 1 投票 0

“fno-elide-constructors”在 GCC 中不起作用?

使用 -fno-elide-constructors 编译的这段代码应该打印“cctor”吗? #包括 结构非自动 { non_auto()=默认值; 私人的: 非自动(常量非自动&) {std::c...

回答 1 投票 0

...(省略号)应该放在 C++ 参数包扩展中的哪里? std::forward 在括号内部还是外部? [重复]

我是C++参数包扩展的新手,长期以来我对...(省略号)的位置感到困惑,例如: 模板 无效函数(参数&&...参数){ ...

回答 2 投票 0

...(省略号)应该放在 C++ 参数包扩展中的哪里?括号里面还是外面?

我是C++参数包扩展的新手,长期以来我对...(省略号)的位置感到困惑。 例如。, 模板 无效函数(参数&&...参数){ ...

回答 1 投票 0

如何在C++中引用typename的typename是模板?

我正在开发一个嵌套模板的项目。如何引用typename的typename? 请参阅下面的示例。 模板 类点1{ 民众: Tx,y; 点 1(T v1, T v2...

回答 1 投票 0

在Qt中创建HTML页面并将页面保存为PDF文件

我正在尝试使用 Qt C++ 创建一个 HTML 文件,然后将其保存为 PDF 文件。到目前为止,我已经成功创建了一个 HTML 文件,但是当我尝试将其保存为 PDF 文件时,我收到警告 D3D11 Live Obje...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.