c++17 相关问题

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

C++ 将构造函数更新传播到客户端代码库

所以我正在尝试向遗留代码库添加新功能。并且希望对客户端代码的影响最小。 我有一个带有默认构造函数和一些非默认构造函数的类。 结构...

回答 1 投票 0

我想知道为什么下面的代码会出现错误。和类型转换运算符有关吗? [关闭]

我想知道为什么下面的代码会出现错误。我使用 clang-17 进行编译。使用 gcc11.4.0 编译此代码也会导致错误消息 我想这应该与...有关

回答 1 投票 0

使用 unique_ptr 遵循 pImpl 习惯用法的类的 unordered_map

这是一个简化的代码:https://godbolt.org/z/EnE76xMrP pImpl 将包含一个互斥体成员,这使得 pImpl 既不可复制也不可移动。但是 Foo 类有 pImpl 的 unique_ptr 作为成员

回答 1 投票 0

C++ 模板模板参数可以接受采用非类型参数的模板吗?

我有一个这样的函数来为C++实现fmap: // 给定从 T 到 U 的映射 F 和 T 的容器,返回 U 的容器 // 其元素是通过原始

回答 3 投票 0

错误:使用 icc 17.0 时,不存在从“Data”到“std::__cxx11::string”的合适的用户定义转换

当我尝试使用特定的编译器版本进行编译时,出现编译器错误。 IE。 icc 17.0 与 -std=c++17 -O3 编译器错误: 源>(19):错误:没有合适的用户定义转换...

回答 1 投票 0

是否可以检查运算符是否重载<< for type or class exists?

我正在尝试检查运算符是否重载<< exists at compile time using c++17. Ideally it is supposed to be something like following: template 静态无效序列化_存储(

回答 1 投票 0

即使共享对象包含静态版本的符号,也使用 C++ 动态 stdc++ 符号

我有一个针对 GCC 8.4 编译的(linux)共享对象,它静态链接在 stdc++fs 中。然后,此共享对象可以在具有较新的 stdc++ 运行时的其他系统上使用和运行,但仅有时

回答 1 投票 0

Pybind11:如何真正修复丢失 DLL 错误?

所以我试图通过一个简单的项目来学习 Pybind11,但是像往常一样,出了问题,当我尝试通过 Python Shell 或文件导入模块本身时遇到了这个错误。

回答 1 投票 0

“在扣除自动之前使用变量”的解决方法

我正在创建包装函数,它修改现有函数(目标)。目标在运行时确定为没有类型信息的指针 (void*)。基本方案是这样的: 布尔换行(

回答 1 投票 0

从 ctor 的成员初始值设定项列表中的 std::initializer_list<CustomType> 初始化 std::list<std::string_view>

),每个玩家都有多个数据成员,其中之一是他们的 m_name (std::string)。实例化时...

回答 2 投票 0

有没有有效的方法来断言 constexpr-if 分支已执行?

int f(auto obj) { if constexpr (HasFastGetData) { 返回 obj.FastGetData(); } 别的 { 返回 obj.GetData(); } } int main() { B 对象; f(对象); ...

回答 1 投票 0

如何根据请求取消使用 std::async 生成的特定工作线程

我的应用程序需要根据请求生成多个工作线程。它还应该提供一个选项来取消基于请求(带有 ID)的长处理线程。 使用 std::

回答 1 投票 0

带有可变参数模板的constexpr

我有一个用于查找最小值的自定义函数: 模板 T 最小值(const T& a, const T& b, const Ts&... t) { 常量自动 m = a < b ? a : b...

回答 1 投票 0

使用 std::variant 的程序可以在 msvc 中工作,但不能在 gcc 中工作

我编写了以下程序,该程序可与 msvc c++17 配合使用,但被 gcc 和 clang 拒绝。我想知道这里是哪个编译器。演示 #包括 结构体C { std::变体 我编写了以下程序,该程序可与 msvc c++17 配合使用,但被 gcc 和 clang 拒绝。我想知道这里是哪个编译器。 演示 #include <variant> struct C { std::variant<bool> mem; C(std::variant<bool> p): mem(p) { } }; int main() { C c(1); //works with msvc but not with gcc and clang } 海湾合作委员会说: <source>: In function 'int main()': <source>:13:10: error: no matching function for call to 'C::C(int)' 13 | C c(1); //works with msvc but not with gcc and clang | ^ <source>:6:5: note: candidate: 'C::C(std::variant<bool>)' 6 | C(std::variant<bool> p): mem(p) | ^ <source>:6:26: note: no known conversion for argument 1 from 'int' to 'std::variant<bool>' 6 | C(std::variant<bool> p): mem(p) | ~~~~~~~~~~~~~~~~~~~^ <source>:3:8: note: candidate: 'constexpr C::C(const C&)' 3 | struct C | ^ <source>:3:8: note: no known conversion for argument 1 from 'int' to 'const C&' <source>:3:8: note: candidate: 'constexpr C::C(C&&)' <source>:3:8: note: no known conversion for argument 1 from 'int' to 'C&&' <source>:13:7: warning: unused variable 'c' [-Wunused-variable] 13 | C c(1); //works with msvc but not with gcc and clang 我想知道这里是哪个编译器 GCC 和 clang 就在这里。这是 P0608R3 和一个已确认的 msvc bug,应作为 C++17 的 DR 应用。 这是相应的已确认的 msvc bug 报告: MSVC 接受无效 std::variant b(1)

回答 1 投票 0

使用成员(operator[])函数调用_result

如何正确调用成员函数的invoke_result?或者专门用于运算符成员函数。我尝试了 std::invoke_result 但没有成功。会是什么...

回答 3 投票 0

对从分配器返回的指针进行指针算术是否格式良好?

我知道这个问题过去已经被问过并得到了一些回答。 然而,我对一个尚未弄清楚的细节有疑问(或者至少我找不到质量保证)。

回答 1 投票 0

如何实现完全符合C++标准且一般没有原子指令的双重检查锁

从我在cppref中发现一句话开始: “注意:此功能的通常实现使用双重检查锁定模式的变体,这减少了已经初始化的运行时开销......

回答 1 投票 0

如何从模板类型别名中删除尖括号

示例: #包括 模板 结构体 X { 模板=真> 使用 MaybeInt = int; 模板 示例: #include <type_traits> template<bool condition> struct X { template<std::enable_if_t<condition, bool> = true> using MaybeInt = int; template<std::enable_if_t<condition, bool> = true> static MaybeInt<> MaybeResult() { return 0; } }; int main() { return X<true>::MaybeResult(); } 是否可以使用末尾没有空尖括号的X<true>::MaybeInt类型?如果没有,为什么? 如果我只是在第 9 行删除它们,C++17 中的 clang++ 会给出以下错误: main.cpp:9:12: error: use of alias template 'MaybeInt' requires template arguments; argument deduction not allowed in function return type static MaybeInt MaybeResult() { ^~~~~~~~ main.cpp:6:5: note: template is declared here using MaybeInt = int; ^ 1 error generated. 为什么不允许这样做? 不,在类或别名模板名称上省略模板参数列表与空模板参数列表具有不同的含义。 使用空的模板参数列表,整个事物命名一个单一类型,该类型是通过使用模板参数的所有默认模板参数获得的特化。 如果没有模板参数列表,该名称向编译器指示要执行类模板参数推导 (CTAD) 来确定模板参数。 然而,正如编译器告诉您的那样,CTAD 仅在特定上下文中允许,并且函数返回类型不是其中之一。

回答 1 投票 0

async_write 仅在服务器关闭后发送

我正在尝试通过 async_write 发送消息,但它们仅在我关闭服务器(ctrl-c)后发送 例如: 作为客户,我发送“test”和“test2”,并且仅在关闭后...

回答 1 投票 0

Qt6 c++ ScrollArea 不显示滚动条

根据标题,我有一个 infoWindow,它是一个 QWidget,我可以通过单击主 Qt MainWindow 中的信息或保持组合 Ctrl+Alt+I 打开它。 该信息窗口包含垂直布局...

回答 1 投票 0

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