c++20相关内容

如何使类方法成为协程?

如何使类方法成为协程?这里有一个小例子。在这里,我试图从类方法创建协程,但编译器抛出以下错误: 错误:找不到此协程的承诺类型 52|std::载体vec=co_aWait等待函数1(); 如何正确设置方法的协程特征_特征? auto awaitable_func1() { struct Awaitable { std::vector ..
发布时间:2022-08-15 21:17:11 C/C++开发

在C++20中,如何编写连续的迭代器?

C++20显式支持std::contiguous_iterator_tag。一些STL算法(例如std::copy)可以在连续迭代器上执行得更好。但是,我不清楚程序员应该如何访问此新功能。 为了便于讨论,我们假设我们有一个完全符合C++20的库实现。我想编写尽可能最简单的连续迭代器。 Here's my first attempt. #include cl ..
发布时间:2022-08-15 21:11:31 C/C++开发

Range-for循环c++20中当前元素的访问索引

在C++20之前的问题Access index in range-for loop (answer)中提到 2020注意:使用基于lambda的解决方案可能比使用宏诡计更明智。 有人能发布基于lambda的C++20解决方案吗?C++20还有其他新的解决方案吗? 编辑:我有一个主循环,它在向量的大小上是多态的。由于我必须经常阅读和修改这段代码,我认为我有理由希望得到最好的解决方案 ..
发布时间:2022-05-17 13:04:43 C/C++开发

C++概念成员检查类型与引用的不一致

我正在学习C++概念,我有一个讨厌的问题: 我不知道如何区分成员变量是int类型的变量和成员变量是int&类型。 原因是我正在使用的检查使用的是instance.ember语法,而在C++中,它返回一个引用。 完整示例: #include #include template void print(T t) ..
发布时间:2022-05-17 12:58:08 C/C++开发

C++-std::Initializer_List与std::span

std::initializer_list和有什么区别?两者都是某种类型的值的连续序列。这两家公司都没有所有权。 那么,我们什么时候使用第一个,什么时候使用后者? 推荐答案 简而言之,std::initializer_list用于创建新区域,用于初始化。而std::span用于引用现有范围,以获得更好的接口。 std::initializer_list是一种语言 ..
发布时间:2022-05-17 12:50:16 C/C++开发

有什么方法可以改进这个Delegate<;void(int&;)>;::Bind<;TestStruct&;,&;TestStruct::SomeFunction>;(estStruct,Value)语法吗?

我正在尝试实现一个委托类型,该类型将与泛型回调一起使用,并在存在重载集的情况下工作。 为简化起见,此处摘录了类,并将绑定方法实现为静态函数以简化问题。 template class Delegate; template struct Delegate ..
发布时间:2022-05-17 12:44:17 C/C++开发

C++20、clang 13.0.0、u8字符串支持

我在一个基于CMAKE的项目中使用clang 13.0.0,CMAKE_CXX_STANDARD被定义为20。以下代码导致编译错误(命名空间‘std’中没有名为‘u8string’的类型): #include #include int main() { #ifdef __cpp_char8_t std::u8string sss = u8"a ..
发布时间:2022-05-17 12:28:35 C/C++开发

使用范围/视图而不是模板的通用编程?

我希望有接受任何固定类型容器的函数。例如,将同时接受std::array和std::array的函数。 我原以为使用Range可以做到这一点,但我意识到我的理解相当肤浅。 是否可以在没有模板的情况下实现? 编辑:我们是否可以使用范围库来定义一个类型,该范围库将执行与SPAN相同的操作,但将用于非连续容器?也许我的问题表达得不对,我的意思可能是视 ..
发布时间:2022-05-17 12:12:33 C/C++开发

概念(C++20)可以用作布尔值吗?

using T = decltype(std::same_as) 我已经在VS2019上试过了。结果是T = bool。 这是由标准定义的,还是仅由特定编译器定义的属性? 我还没有找到关于这件事的任何官方消息。 https://en.cppreference.com/w/cpp/concepts 推荐答案 AConcept-idLikestd::same ..
发布时间:2022-05-17 11:43:43 C/C++开发

在C++中使用UTF-8字符串正确检查回文

尝试回答问题How to use enqueu, dequeue, push, and peek in a Palindrome?时,我建议使用std::stringstd::string查找回文: bool isPalindrome(const std::string str) { return std::equal(str.begin(), str.end(), str.rbeg ..
发布时间:2022-05-17 11:32:41 C/C++开发

在单独的模块单元中实现时,C++20模块程序失败

在重构项目以与模块一起使用之前,我编写了一个测试项目ExImMod,以查看是否可以像模块文档中所宣传的那样分离声明和定义。对于我的项目,我需要将声明和定义保存在单独的翻译单元(TU)中,根据模块文档,这也是可能的。我不想使用模块分区。 遗憾的是,我的测试ExImMod项目表明它们不能完全分开,至少对于Visual Studio 2022(STD:C++LATEST)编译器(VS22)是这样。 ..
发布时间:2022-05-17 11:20:41 C/C++开发