Используйте концепции, чтобы проверить, существует ли глобальная функция

Я могу создать концепцию, которая проверяет существование функции-члена, называемой to_string (), которая возвращает std :: string в структуре / классе.

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

Я хотел бы создать концепцию, которая проверяет существование глобальной функции to_string, которая принимает T и возвращает std :: string. Я не могу этого сделать. В качестве компилятора я использую gcc 10.2.

Я предполагаю, что выгляжу так, но это не удается:

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

person mlom    schedule 11.10.2020    source источник
comment
От чего зависит существование этой глобальной функции?   -  person cigien    schedule 11.10.2020
comment
@cigien: Почему существование этой функции должно зависеть от других вещей?   -  person einpoklum    schedule 11.10.2020
comment
@einpoklum Понятия ограничивают типы. Я не уверен, что здесь сдерживается.   -  person cigien    schedule 11.10.2020
comment
Хорошо, понятно, T - это параметр. Я немного отредактировал вопрос, надеюсь, что все в порядке.   -  person cigien    schedule 11.10.2020
comment
stackoverflow .com / questions / 63385719 / и stackoverflow.com/questions/64146257/ должна помочь.   -  person cigien    schedule 11.10.2020


Ответы (1)


Кажется, это работает:

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

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

person Mukesh Ingham    schedule 11.10.2020
comment
Да, это работает. Это другая концепция, которую необходимо решить. - person mlom; 12.10.2020
comment
@mlom Я не уверен, о какой другой концепции вы имеете в виду: я хотел бы создать концепцию, которая проверяет существование глобальной функции с именем to_string, которая принимает T и возвращает std :: string. Часть { to_string(v) } проверяет наличие глобальной функции. - person Mukesh Ingham; 12.10.2020
comment
@mlom Хорошо, не беспокойтесь :) - person Mukesh Ingham; 12.10.2020