Size: a a a

2020 November 27

VS

Vlad Serebrennikov in pro.cxx
Ilia Zviagin
Все дело в том, что функция не объект... Или не совсем объект
насколько я понимаю, функции вообще не объекты:  An object type is a (possibly cv-qualified) type that is not a function type, not a reference type, and not cv void.
источник

AS

Alex Sandrov in pro.cxx
вообще, и то и то - набор байт. Всё дело в том, как ты это интерпретируешь, и что с этим делаешь.
источник

IZ

Ilia Zviagin in pro.cxx
Vlad Serebrennikov
насколько я понимаю, функции вообще не объекты:  An object type is a (possibly cv-qualified) type that is not a function type, not a reference type, and not cv void.
Ну указатель на функцию в виде переменной - объект
источник

АР

Андрей Руссков... in pro.cxx
в целом поменяв способ объявления функции с
int foo(float x) { return 5; }
источник

АР

Андрей Руссков... in pro.cxx
на
auto foo = +[](float x) -> int { return 5; }
мы получаем указатель на объект
источник

АР

Андрей Руссков... in pro.cxx
гарантированно
источник

ПК

Побитый Кирпич... in pro.cxx
Alex Sandrov
вообще, и то и то - набор байт. Всё дело в том, как ты это интерпретируешь, и что с этим делаешь.
В с++ это так не работает, слишком высокоуровневый язык
источник

AS

Alex Sandrov in pro.cxx
Побитый Кирпич
В с++ это так не работает, слишком высокоуровневый язык
но вот этот переход в void* - это, имхо, уход от высокого уровня
источник

IZ

Ilia Zviagin in pro.cxx
Андрей Руссков
на
auto foo = +[](float x) -> int { return 5; }
мы получаем указатель на объект
Но это уже не фукнция.
источник

IZ

Ilia Zviagin in pro.cxx
Андрей Руссков
на
auto foo = +[](float x) -> int { return 5; }
мы получаем указатель на объект
Блин, кстати, а что за + в начале?
источник

ПК

Побитый Кирпич... in pro.cxx
Alex Sandrov
но вот этот переход в void* - это, имхо, уход от высокого уровня
У него тоже есть свои правила, которые надо соблюдать, чтоб всё по канону было
источник

АР

Андрей Руссков... in pro.cxx
Ilia Zviagin
Но это уже не фукнция.
мы инстанцируем функцию и сразу объявляем на неё указатель и это обязано работать )
источник

AS

Alex Sandrov in pro.cxx
Побитый Кирпич
У него тоже есть свои правила, которые надо соблюдать, чтоб всё по канону было
Это плюсовые правила?
источник

ПК

Побитый Кирпич... in pro.cxx
Alex Sandrov
Это плюсовые правила?
Ага
источник

АР

Андрей Руссков... in pro.cxx
Ilia Zviagin
Блин, кстати, а что за + в начале?
обычный унарный плюс )
для лямбды выберется перегрузка для указателя, т.е. будет каст к указателю если возможен, либо ошибка компиляции если лямбда не приводится к указателю на функцию
источник

m

magras in pro.cxx
Андрей Руссков
на
auto foo = +[](float x) -> int { return 5; }
мы получаем указатель на объект
Мы получаем именно указатель на функцию. Без плюса был бы объект.
источник

AS

Alex Sandrov in pro.cxx
Просто я бы очень старался не использовать касты в void* вообще
источник

ПК

Побитый Кирпич... in pro.cxx
Alex Sandrov
Просто я бы очень старался не использовать касты в void* вообще
И правильно
источник

IZ

Ilia Zviagin in pro.cxx
Alex Sandrov
Просто я бы очень старался не использовать касты в void* вообще
Ещё раз, тебе они не нужны
источник

АР

Андрей Руссков... in pro.cxx
magras
Мы получаем именно указатель на функцию. Без плюса был бы объект.
ну да. Речь же о том как получить указатель на функцию не стукнувшись нигде в стандарте? )
источник