[英]How can I use std::regular/std::totally_ordered in C++20?
我想在我的 class 中聲明template(std::regular N, std::regular E)
,但報告了錯誤“命名空間 std 中沒有名為 'regular' 的類型”。 同樣的錯誤發生在std::totally_ordered
上。 我檢查了 cppreference 並在我的代碼中包含了所需的頭文件concepts
,但不起作用。 這里發生了什么,我該怎么辦? 我對 C++ 很陌生,感謝您的幫助。
該錯誤聽起來像您的編譯器沒有被告知在 C++20 模式下編譯。 通常這是通過命令行上的--std=c++20
(linux 編譯器)或/std:c++20
(MSVC)來實現的,或者通過配置您的構建系統來為您執行此操作。 只是為了提供一個例子,這樣的事情將起作用:
#include <concepts>
template<std::regular N, std::regular E>
struct foo
{
N n {};
E e {};
friend bool operator==(foo const&, foo const&) = default;
};
int main()
{
return foo{2, 1u} == foo{1, 2u};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.