使用 GCC 尝试标准库 <concepts>

Tom*_*Tom 5 c++ gcc c++-concepts c++20

GCC 支持-fconcepts切换,提供实验性核心语言概念功能。

还有一种方法可以使用标准库实现(的实验版本)吗?

在设计概念时如果有std::derived_fromstd::convertible_tostd::destructible 和朋友们在场那就太好了。

#include <concepts>

template<typename T>
concept Fooable = requires(T f) {
    { bar(f) } -> std::convertible_to<float>;
};
Run Code Online (Sandbox Code Playgroud)

Fed*_*dor 0

该问题没有阐明 GCC 的版本。-std=c++20实际上从 GCC 10 开始,编译器和标准库实现 (libstdc++) 都通过命令行选项支持这些概念。演示: https: //gcc.godbolt.org/z/9G5Y1KEeT