c++17 相关问题

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

如何在 VSCode C++ 扩展中启用 C++17 标准

我想在 VS Code 中将 c++11 切换为 c++17。我尝试按照说明进行操作,但没有成功。 任务.json “版本”:“2.0.0”, “任务”: [ { “……

回答 3 投票 0

printf() a std::string_view 的正确方法?

我是 C++17 和 std::string_view 的新手。 我了解到它们不是空终止的,必须小心处理。 这是 printf() 的正确方法吗? #包括 #包括<...

回答 4 投票 0

理解 C++ 中的 `this` 指针、`return *this` 和引用

我目前正在学习 C++ 中的面向对象编程,我正在尝试理解 this 指针、return *this 和引用的使用的概念。我遇到过一个

回答 1 投票 0

在c++中循环命名空间中的所有函数

我的目标是迭代命名空间的所有函数,直到函数返回我有效的策略(枚举)。每个函数可以采用不同的参数。 枚举类策略类型 { 策略1、

回答 2 投票 0

额外移动构造函数调用的说明

我将直接转到代码并解释我在这里想要理解的内容。 MyInt 类 { unique_ptr ptr; 民众: MyInt(int val) { 计算<...

回答 1 投票 0

模板参数的 HomoValueList 不起作用

问题是我在 Nicolai M. Josuttis 所著的《C++17 Complete Guide》一书中遇到了一段代码,第 122 页。该代码片段对我不起作用。我想知道为什么。 模板 问题是我在 Nicolai M. Josuttis 的一本名为 C++17 Complete Guide 的书中遇到了一段代码,第 122 页。该代码片段对我不起作用。我想知道为什么。 template<auto V1, decltype(V1)... VS> class HomoValueList { }; 作者声称这样的声明应该禁止非同构模板参数。但实际上我不能产生错误: int main() { HomoValueList<1, 'a', true> vals4; // Must be an error according to the author but not for me. return 0; } 这段代码是因为隐式转换而编译的,所以这本书是错误的。 我想知道自 C++17 标准发布以来是否发生了一些变化,因为作者声称必须禁止该行。 我不这么认为。即使在 C++17 模式下,最新的 Clang、GCC 和 MSVC 都接受此代码。 这是一个可行的 C++20 替代方案:(感谢 @PatrickRoberts) template <auto V1, auto ...VS> requires (std::is_same_v<decltype(V1), decltype(VS)> && ...) class HomoValueList {}; C++20 之前的版本,您可以使用 static_assert,但请注意,它不适合 SFINAE。 template<auto V1, auto ...VS> class HomoValueList { static_assert((std::is_same_v<decltype(V1), decltype(VS)> && ...)); };

回答 1 投票 0

当派生类仅重写所有方法的子集时,为什么会出现 C++ 编译错误,所有方法都具有相同的名称但不同的签名(重载)

简单地说,您有一个接口基类 A,它提供了一个多态 method(),一个派生类 B,它实现了其中一些 method() 的细节。然后一些外部函数调用这些,co...

回答 1 投票 0

如何泛化任何可变参数模板类型的模板专业化?

我有以下类型函数来计算某个类型 T 是否是元组中类型列表的一部分: 模板 结构体IsInTuple; 模板 我有以下类型函数来计算某种类型T是否是元组中类型列表的一部分: template<typename T, typename Tuple> struct IsInTuple; template<typename T, typename ...Ts> struct IsInTuple<T, std::tuple<Ts...>> { static constexpr bool value = std::disjunction_v<std::is_same<T, Ts>...>; }; 我的问题是,是否可以将此函数推广到任何采用可变参数类型列表的可变参数模板类型,以便它不仅适用于元组,而且还适用于变体? 是否可以将此函数推广到任何采用可变参数类型列表的可变参数模板类型,以便它不仅适用于 std::tuples,而且还适用于 std::variants? 是的,可以。只需使用模板模板参数来概括情况即可。 template<typename T, typename Class> struct IsInTypeList; template<template<typename...Ts> class Class, typename T, typename ...Ts> struct IsInTypeList<T, Class<Ts...>> { static constexpr bool value = (std::is_same_v<T, Ts> || ...); }; // Example usage static_assert(IsInTypeList<int, std::tuple<int, float, double>>::value, "int is in the tuple"); static_assert(!IsInTypeList<char, std::tuple<int, float, double>>::value, "char is not in the tuple"); static_assert(!IsInTypeList<char, std::variant<int, float, double>>::value, "char is not in the tuple");

回答 1 投票 0

当存在移动和复制构造函数时,C++ 默认构造函数不会通过“using”继承

A级{ 民众: A(){}; }; B 类:公共 A{ 民众: 使用 A::A; B(const B&) = 默认值; B(B&&)=默认值; }; 乙b; 编译器 (g++ (5.4.0-6ubuntu1) /...

回答 3 投票 0

指定从 std::variant 获取类型的更简洁方法?

我有可以简化为的代码 std::variant v[2] = foo(); int a = std::get(v[0]); 浮点数 b = std::get(v[1]); 显然这可以...

回答 3 投票 0

如果类型包包含特定类型,如何仅向类添加方法?

我正在尝试创建一个可以包含类型包的类。 // 包.hpp 模板 班级包决赛 { Pack(const std::tuple items) : items_(std::move(item...

回答 1 投票 0

为什么 OpenGL 告诉我在运行后抛出“int”实例后调用终止?

所以我尝试使用 GLFW 制作一个 OpenGL 项目,并很高兴在 Visual Studio 代码中使用它,但是当我编译和运行该程序时,它会抛出错误。 我尝试在窗口中制作 3 个三角形,它...

回答 1 投票 0

用 noexcept(...) 替换 throw(...) - ABI 跨语言标准安全?

假设我使用的库在其标头中具有如下声明: #if __cplusplus >= 201703L // C++17 或更高版本 #define _NOTHROW noexcept(true) #define _THROWS(x) noexcept(假) #

回答 1 投票 0

仅当类型包包含 C++ 中的特定类型时才向类添加方法

我正在尝试创建一个可以包含类型包的类。 // 包.hpp 模板 类包最终{ Pack(const std::tuple items) : items_(std::move(items...

回答 1 投票 0

如何从返回模板抽象类的函数返回指针?

我有 2 个类 BaseArrayList,它是一个抽象模板类和一个来自 BaseArrayList 的 ArrayList 派生类,我让用户输入他们想要的列表类型,但问题是我...

回答 1 投票 0

为什么 std::vector 构造函数抛出 std::length_error 而不是 std::bad_alloc?

考虑以下示例: #包括 #包括 #包括 int main() { std::vector::size_type n; std::cout << "Enter arra...

回答 1 投票 0

如何将数学表达式转换为C++中的lambda函数?

我正在尝试将数学表达式字符串转换为 C++17 中的 lambda 函数。我怎样才能用函数进行这种类型的转换? std::function str2lambda(const std::string&am...

回答 1 投票 0

std::is_callable 有什么问题?

自 2017 年 3 月 13 日起,std::is_callable 已从 cppreference.com 中消失。 WaybackMachine 上的最新可用描述是 2016 年 11 月 21 日。 std::is_callable 和 std::

回答 1 投票 0

已解决:使用 OpenCV 和 libmagic 创建适用于 MacOS 的独立可执行文件

我目前正在尝试将我的程序编译为独立的。 我使用的是 MacOS M2,目标操作系统也是 MacOS M2。我只想将可执行文件从一台 Mac 拖放到另一台 Mac 上,然后

回答 1 投票 0

Leetcode AddressSanitizer 由于一个简单的条件而出错

我是Leetcode新手,我不知道我的代码有什么问题。我正在解决“二和”问题,当我尝试编写重复的条件时出现错误

回答 1 投票 0

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