C ++ 17是2017年批准的C ++标准的名称。它基于以前的C ++ 14标准,改进了核心语言和标准库,并添加了一些新的语言功能。
我正在使用 Visual Studio 运行一个简单的 SFML 代码,该代码呈现一个圆圈并播放音频。我试图在渲染发生之前和渲染窗口关闭之后播放音频, 但为了...
使用 std::enable_if<> 来避免模棱两可的模板化二元运算符重载
我想使用 std::enable_if<> 来避免 MyClass*otherT 与 otherT*MyClass 与 MyClassT*MyClassT 中的歧义重载运算符*(T,U)(或重新定义) 可以说 MyClass 声明是: 寺庙...
请告诉我在这种情况下我是否正确定义了 noexcept 表达式的条件? 类计划主机端口 { 民众: 使用 value_type = std::string; 方案_主机_PO...
我怎样才能做到这一点?目前出现以下编译错误 错误:成员指针引用非类类型“Test *” 6 | if constexpr (std::is_same 我怎样才能做到这一点?目前出现以下编译错误 error: member pointer refers into non-class type 'Test *' 6 | if constexpr (std::is_same<MethodT, void (ObjectT::*)(int)>::value) #include <type_traits> template<typename MethodT, typename ObjectT> void RegisterCallback(MethodT method, ObjectT object) { if constexpr (std::is_same<MethodT, void (ObjectT::*)(int)>::value) { // do something } if constexpr (std::is_same<MethodT, void (ObjectT::*)(int, float)>::value) { // do something else } } int main() { struct Test { void HandleCallbackWithInt(int) {} void HandleCallbackWithIntFloat(int, float) {} } receiver; RegisterCallback(&Test::HandleCallbackWithInt, &receiver); return 0; } 当您将 &receiver 传递给 ObjectT object 时,ObjectT 会被推导为 Test*,并且 ObjectT::* 对于指针类型 ObjectT 无效。你可能想要 template<typename MethodT, typename ObjectT> void RegisterCallback(MethodT method, ObjectT* object) // ------------------------------------------^ 和 ObjectT 将被推导为 Test。
在问题 Idiom for Initializing an std::array using a Generator Function Take the Index? 中,它基本上询问如何初始化任意类型的数组,而这不一定是
使用采用索引的生成器函数初始化 std::array 的惯用语?
假设我有一个函数T foo(size_t i),并且我想构造一个std::array类型的对象arr,使得arr[i] == foo(i)。我想要一个即使 T 不存在也能工作的解决方案...
我正在使用 C++ 中的模板,想知道如何正确(值)初始化类模板中的非静态数据成员。例如,考虑以下代码片段: 模板<
是否可以在编译前检查头文件中的 std::execution::par ?
我使用的是 Mac Ventura 13.6.4。当我在线研究 标头时,我了解到尝试编译某些执行策略时存在问题。例如,使用
如何在 C++ 中高效地使用 std::variant 进行错误处理?
我最近开始探索在现代 C++(C++17 及更高版本)中使用 std::variant 来处理错误并同时从函数返回值,有点类似于 Rust 的 Result 类型。我
在 Linux 中使用 g++ 编译器编译 {fmt} 包含文件时,出现类是私有的且无法从外部访问的错误
我正在使用 #include 在我的 C++ 应用程序中格式化 std::array #包括 #包括 int main() { std::array 一个...
我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // 这里的问题是,如何声明 std::map,即 ref_maps; 标准::地图 我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // here is the question, how to declare the std::map, i.e. ref_maps; std::map<std::string, std::tuple<SomeUncertainType, AnotherUncertainType>> ref_maps; // one type msgType1 msg1_t; // = ...with some value assigned; msgType1::SharedPtr msg1_p; //-> ...with some value assigned, and notice, here is a SharedPtr std::string topic_name1 = "t1" // another type msgType2 msg2_t; msgType2::SharedPtr msg2_p; std::string topic_name1 = "t2" ref_maps[t1] = std::make_tuple(msg1_t, msg1_p); ref_maps[t2] = std::make_tuple(msg2_t, msg2_p); 这是否可能或任何其他方法可以实现类似的结果? 与某些基类不同的是 ros2 msgTypes( 和 ::SharedPtr) ,这样我就可以声明 ref_maps ,如下所示: std::map<std::string, std::tuple<MsgTypeBase, MsgTypePtrBase>> ref_maps; 如果需要使用一个类,该类的实例在任何给定时间都保存一种类型的值或其替代值(前提是它们已知),则标准解决方案是std::variant。 它本质上代表了一个类型安全的联合,它提供了一组成员和非成员函数,使一种类型和另一种类型之间的切换更简单。此外,值始终是静态分配的,避免了动态分配的内存和性能开销。 std::map<std::string, std::pair<std::variant<T1, T2>, std::variant<T1, T2>>>; 如果可能的类型对只有(T1,U1),(T2,U2),则可以按以下方式修改定义。 std::map<std::string, std::variant<std::pair<T1, U1>, std::pair<T2, U2>>>;
如何使用不同类型的ros2 msg制作topic_name(std::string)的std::map?
我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // 这里的问题是,如何声明 std::map,即 ref_maps; 标准::地图 我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // here is the question, how to declare the std::map, i.e. ref_maps; std::map<std::string, std::tuple<SomeUncertainType, AnotherUncertainType>> ref_maps; // one type msgType1 msg1_t; // = ...with some value assigned; msgType1::SharedPtr msg1_p; //-> ...with some value assigned, and notice, here is a SharedPtr std::string topic_name1 = "t1" // another type msgType2 msg2_t; msgType2::SharedPtr msg2_p; std::string topic_name1 = "t2" ref_maps[t1] = std::make_tuple(msg1_t, msg1_p); ref_maps[t2] = std::make_tuple(msg2_t, msg2_p); 这是否可能或任何其他方法可以实现类似的结果? 与某些基类不同的是 ros2 msgTypes( 和 ::SharedPtr) ,这样我就可以声明 ref_maps ,如下所示: std::map<std::string, std::tuple<MsgTypeBase, MsgTypePtrBase>> ref_maps; 如果需要使用一个类,该类的实例在任何给定时间都保存一种类型的值或其替代值(前提是它们已知),则标准解决方案是std::variant。 它本质上代表了一个类型安全的联合,它提供了一组成员和非成员函数,使一种类型和另一种类型之间的切换更简单。此外,值始终是静态分配的,避免了动态分配的内存和性能开销。 std::map<std::string, std::pair<std::variant<T1, T2>, std::variant<T1, T2>>>; 如果可能的类型对只有(T1,U1),(T2,U2),则可以按以下方式修改定义。 std::map<std::string, std::variant<std::pair<T1, U1>, std::pair<T2, U2>>>;
C++ 中指向不同变量的指针是否可以相等,特别是在常量求值期间? 请考虑以下程序(自问题第一版以来已简化): constexpr b...
SFML 库在创建第一个 AudioResource 类型的对象时初始化音频设备,并在最后一个对象被销毁时取消初始化它。 我正在尝试简化该代码,正如我所说......
如何使tag_invoke CPO统一处理与元谓词/概念匹配的类型以及包装在reference_wrapper中的类型?
(我最感兴趣的是 c++17 解决方案,即使你看到我使用 std::unwrap_ref_decay;想象一下我已经在我的 C++17 代码中复制并粘贴了可能的实现。另一方面手,...
使用 future 向量时“进程已完成,退出代码 -1073740791 (0xC0000409)”
背景 作为 binance-websocket api 和 std::future 使用的新手。我编写了一个程序来测试本地主机和币安服务器之间的时间差,并获取网络延迟。 我推我的...
如何修复`指定的类型不符合Cpp17MoveInsertable的要求`?
我已经构建了一个自定义类,并遵循(据我所知)这篇文章中描述的三规则:https://stackoverflow.com/a/51864979/2184449 我有一个 MyClass 的自定义定义: :~
我想更新具有以下签名的转换函数: 模板 bool Convert(const In& p_in, Out& p_out); // 如果
我是 CRTP 和大量模板化代码的新手,所以我不确定这是否可能...... 我有一个模板类如下: 模板 类基本类型组件 { 民众: 模板...
我想在我的 C++ 代码中谨慎使用英特尔 IPP(集成性能原语)库函数。我可以观察到,虽然这些函数是 C 风格的函数,但有一个逻辑 p...