使用概念检查全局函数是否存在
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>;
};
我可以创建一个概念来检查名为 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>;
};