C ++ 17是2017年批准的C ++标准的名称。它基于以前的C ++ 14标准,改进了核心语言和标准库,并添加了一些新的语言功能。
我正在用C++编写代码。我有一些向量,现在我使用 for 循环来计算我需要的向量。但是,事实证明这是非常耗时的,特别是当向量的大小是相对的时......
在 C++ 中创建 U 到 V 映射器函数模板的惯用方法是什么?
我现在正在学习 C++,并尝试一些模板功能。我正在尝试创建一个通用模板,该模板接收从 U 到 V 的函数 F、U 类型的 std::array,然后
有没有一种惯用的方法在 C++ 中创建 U 到 V 映射器函数模板?
我现在正在学习 C++,并尝试一些模板功能。我正在尝试创建一个通用模板,该模板接收从 U 到 V 的函数 F、U 类型的 std::array,然后
如何用 stringstream 类型方法替换 #define DEBUG()
我正在尝试替换 #define 函数,如下所示: #define DEBUG(x) do { std::cout << x << std::endl; } while(0) with a more RAII type error tracking object. This tracking ob...
在函数内部,我有一个静态变量,它是一个结构体,并且只有一个字段被初始化: 无效函数(){ 静态 constexpr xcb_change_window_attributes_value_list_t root_mask { .
C++17下赋值运算符是序列点吗?这个表达式的结果是什么? [重复]
建议不要在单个表达式中多次修改对象,也不要在同一表达式中修改对象后使用它。 整数 i = 0; ++++我; // UB ++i = i++; // 好的? 我认为
我尝试在 gcc 6.0 中实际开发时使用新的 c++1z 功能。 如果我尝试这个小例子: #包括 #包括 命名空间...
我有一个共享内存映射文件,它以某种类型的有效负载开头: 结构头 { 无符号长长版本 = 0; std::atomic ok = false; // 其他字段 }; 据我所知
最小工作示例: #包括 #包括 模板 struct is_array : std::false_type {}; 模板 结构 is_arr...
最小工作示例: #包括 #包括 模板 struct is_array : std::false_type {}; 模板 结构 is_arr...
我有一个简单的常量,我喜欢在运行时评估它的值(或者如果你建议更好的方法)。 内联浮点数 deg_to_rad(float p_y) { 返回 p_y * static_cast(Math_PI) / 180...
Xcode Mac C++ vDSP_mmul 返回不同的结果
使用XCODE -std=c++17,Accelerate Framework包含在项目中。 vDSP_mmul(const float* Nonnull A,vDSP_Stride IA,const float* Nonnull B,vDSP_Stride IB, float *Nonnull C,vDSP_Stride IC) 结果
我什么时候不应该将 hardware_delta_interference_size 与 std::atomic 一起使用
hardware_delta_interference_size用于防止错误共享。 cppreference 有一个示例,尝试将其他一些数据与 std::atomic 保存在一起: // 来自 https://en.cppreferenc...
函数定义在 .h 文件中编译,但不在 .cpp 文件中,使用 C++17 和 VS 代码
我试图在 .cpp 文件中实现 setColor() 的定义,该定义之前在 Sphere 类的 .h 文件中正确编译,但现在我收到下一个链接器错误: 开始构建....
检查成员函数是否是使用SFINAE而不是requires子句定义的
我想检查类的特定成员函数是否已定义并且同时未被 SFINAE 禁用。以下代码有效: 结构体A { int foo() { 返回 3; } }; 结构体B{}; 温度...
为什么这不起作用? 这是一个基本的库存系统。 inventory 是 std::vector , Item 是一个具有 int 数量和 std::string 名称的结构。 结构项 { 整数数量; std::str...
我有以下类型函数来计算某个类型 T 是否是 std::tuple 中类型列表的一部分: 模板 结构体IsInTuple; 模板 我有以下类型函数来计算某些类型T是否是std::tuple中类型列表的一部分: 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::tuple,还适用于 std::variant? 是否可以将此函数推广到任何采用可变参数类型列表的可变参数模板类型,以便它不仅适用于 std::tuples,而且还适用于 std::variants? 是的,可以。只需使用 template 模板参数 来泛化类型特征。 template<typename T, typename Class> struct IsInTypeList; template<typename T , template<typename...> class Class, typename... Ts> struct IsInTypeList<T, Class<Ts...>> { static constexpr bool value = (std::is_same_v<T, Ts> || ...); // or std::disjunction_v<std::is_same<T, Ts>...>; }; // Example usage static_assert(IsInTypeList<int, std::tuple<int, float, double>>::value, "int is not in the tuple"); static_assert(!IsInTypeList<char, std::tuple<int, float, double>>::value, "char is in the tuple"); static_assert(!IsInTypeList<char, std::variant<int, float, double>>::value, "char is in the variant"); 观看现场演示
我已经看到是否有一个单行代码可以将元组/对解压到引用中?并知道如何将元组/对中的值解压到单行中,如下所示 auto [有效性,表] =
字符串构造函数将两个 char* 放入另一个 std::string 在 c++14 中有效,但在 c++17 中无效
以下程序尝试使用第一个字符串和指向第一个字符串中间的指针构造第二个字符串: #包括 int main() { std::string src = "你好