c++17 相关问题

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

是否可以检查运算符是否重载<< 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

如何升级到C++17?

我使用 Atom 作为我的 IDE,我当前的 __cplusplus = 201402 是 C++14,我的编译器是 g++ (GCC) 9.2.0。 如何升级到 C++17 或 C++20? 我搜索到的所有内容都涉及使用另一个...

回答 3 投票 0

如果结果不适合目标类型,结果 static_cast 是否为未定义行为

我们的代码库中有一个现有函数,如下所示: 模板 bool ConvertFromToIsValid(const OLD_TYPE fromValIC, NEW_TYPE & toValOR) noexce...

回答 1 投票 0

如何使用折叠表达式实现“多米诺骨牌”或“级联”更新功能?

我正在编写一个可变参数模板函数,它应该实现“多米诺骨牌”更新。也就是说:给定一个谓词 p,它应该迭代多个 lval(通过引用传递)和 ass...

回答 2 投票 0

如何用c++函数模板实现多调度

这就是我想要的: 结构体类型1{}; 模板 ,void>* = nullptr> my_fuction(const T& obj) { std::cout << "

回答 1 投票 0

使用 std::wstring_view 为映射定义 const std::wstring 键

我正在尝试使用 std::map 和 std::wstring 作为键来设置一个结构,并尝试使用一些语法 surgar 通过宏和 std::wstring_view 使键声明/定义变得容易(对于.. .

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.