C ++ 17是2017年批准的C ++标准的名称。它基于以前的C ++ 14标准,改进了核心语言和标准库,并添加了一些新的语言功能。
std::move 于 std::vector 类型的 std::Optional
在 std::Optional> 上执行 std::move 是否安全?它没有给我任何编译器或运行时错误,但想知道这是否有效。这是我的示例代码
std::is_invocable 可以在 C++11 中模拟吗?
我想使用std::is_invocable,但是我们使用的是c++11标准,而is_invocable仅在c++17中可用。 有什么方法可以使用 c++11 模拟功能吗? 谢谢你
我正在用最新的 clang++ 玩弄 c++17 中的折叠表达式。 我尝试使用它来实现数组的 less 运算符,我想将其用于固定大小的字符串。 这里是...
为什么我不应该将带有按引用捕获的 lambda 传递给 std::thread 构造函数?
我编写了一个计时器类,但它没有按照我需要的方式工作。谁能告诉我这有什么问题吗? 模板 上课定时器 { 民众: 计时器(D 时段、C&am...
我编写了一个计时器类,但它没有按照我需要的方式工作。谁能告诉我这有什么问题吗? 模板 上课定时器 { 民众: 计时器(D 时段、C&am...
我想要一个连接 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);} 现场演示 有了概念,你就有了更好的方法来做同样的事情,但原则上它会做同样的事情。
我尝试执行检查参数是否与特定值匹配的函数。 我认为知道如何使用递归或 std::initializer_list 来做到这一点,但我想用折叠来做到这一点。这是非工作代码:
我正在使用 SDL2 库为 2D RPG 游戏编写 C++ 程序。我有一个名为 Entity 的类,它有一个名为 worldY 的属性: 类实体 { 民众: ... // 坐标世界:la ...
我尝试读取作为 zip 存档一部分的二进制文件。因此我用 Poco::Zip 打开了 zip 存档。然后我按块读取二进制文件 结构头 { uint64_t 标签; uint32_t
使用 C 风格字符串初始化 std::string_view
std::string_view 对象仅具有对诸如 std::string 之类的对象的视图,并且修改用于初始化 string_view 的字符串的值将使该对象无效。 现在,如果我初始化一个字符串...
我正在编写一个程序,它创建一些随机数组,然后使用两个不同的排序函数对它们进行排序。首先,我创建一个由不同大小的 Fleet 对象组成的向量。然后,对于每个舰队我
“fno-elide-constructors”在 GCC 中不起作用?
使用 -fno-elide-constructors 编译的这段代码应该打印“cctor”吗? #包括 结构非自动 { non_auto()=默认值; 私人的: 非自动(常量非自动&) {std::c...
...(省略号)应该放在 C++ 参数包扩展中的哪里? std::forward 在括号内部还是外部? [重复]
我是C++参数包扩展的新手,长期以来我对...(省略号)的位置感到困惑,例如: 模板 无效函数(参数&&...参数){ ...
...(省略号)应该放在 C++ 参数包扩展中的哪里?括号里面还是外面?
我是C++参数包扩展的新手,长期以来我对...(省略号)的位置感到困惑。 例如。, 模板 无效函数(参数&&...参数){ ...
如何在C++中引用typename的typename是模板?
我正在开发一个嵌套模板的项目。如何引用typename的typename? 请参阅下面的示例。 模板 类点1{ 民众: Tx,y; 点 1(T v1, T v2...
我正在尝试使用 Qt C++ 创建一个 HTML 文件,然后将其保存为 PDF 文件。到目前为止,我已经成功创建了一个 HTML 文件,但是当我尝试将其保存为 PDF 文件时,我收到警告 D3D11 Live Obje...
我正在尝试使用闭包/自定义函数来实现笛卡尔积,闭包是 function(x,y) = pow(x,2) + pow(y,2) 并以功能方式实现它,即不使用C 型 Lo...
我已经用另一种方式修复了它,但我仍然想知道为什么 stoi 在这里不起作用。这是代码: #包括 #包括 std::string fakeBin(std::string str){ 对于(我...
我的解决方案如下。 国际象棋中的象是一个棋子,它攻击同一条对角线上(两条对角线上)的所有方格。 Shakhriyar 将 m 个主教放在一个大小为 n * n 的棋盘上。现在他想要
我在代码中发现了一个性能问题,该问题是由于在非左值范围上使用并行执行策略调用的算法缺乏并行性而导致的。 考虑以下代码