簡體   English   中英

如何在 C++20 中使用 std::regular/std::totally_ordered?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM