Совместимы ли подписи 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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