使用概念检查全局函数是否存在

Use concepts to check if a global function exists

我可以创建一个概念来检查名为 to_string() 的成员函数是否存在,该成员函数 returns a std::string in a struct/class.

template<typename T>
concept method_to_string = requires(T v)
{
    { v.to_string() } -> std::same_as<std::string>;
};

我想创建一个概念来检查是否存在名为 to_string 的全局函数,该函数接受 T 和 returns std::string。我没有那样做。我使用 gcc 10.2 作为编译器。

我的猜测是我看起来像这样,但它失败了:

template<typename T>
concept function_to_string = requires(T v)
{
    to_string(const T&) -> std::same_as<std::string>;
};

这似乎有效:

template<typename T>
concept method_to_string = requires(T v)
{
    { to_string(v) } -> std::same_as<std::string>;
};

https://gcc.godbolt.org/z/7WdTjf