Почему operator()
функтора без сохранения состояния не может быть static
? Лямбда-объекты без сохранения состояния можно преобразовать в указатели на свободные функции, имеющие ту же сигнатуру, что и их operator()
.
Стефан Т. Лававей на р. 6 указывает, что преобразование в указатель на функцию - это просто operator FunctionPointer()
(cite). Но я не могу получить соответствующий указатель на operator()
относительно функции, не являющейся членом. Для функторной struct F { void operator()() {} }
кажется невозможным преобразовать &F::operator()
в экземпляр типа, using P = void (*)();
,
Код:
struct L
{
static
void operator () () const {}
operator auto () const
{
return &L::operator ();
}
};
Ошибка
перегруженный оператор() не может быть статической функцией-членом
но operator()
не перегружен.