Совместимы ли подписи value или const& для std::function? [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Совместимы ли подписи value или const& для std::function? [дубликат]

Сообщение Anonymous »

Итак, у меня есть обратный вызов, определенный как:

Код: Выделить всё

struct S {
int a{3};
};

using callback = std::function;
И хотите вызвать его с помощью какой-нибудь функции:

Код: Выделить всё

void f(callback&& cb) { cb(S{}); }
Я заметил, что компилятору было все равно, указал ли я обратный вызов с помощью S (значение) или S const& (константная ссылка), хотя явно только последнее соответствует подписи:

Код: Выделить всё

int main()
{
f([](S const& s) { std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78399296/are-value-or-const-compatible-signatures-for-stdfunction[/url]

Вернуться в «C++»