Если убрать static_cast, все работает
https://ideone.com/8SxUhE
using Ret = decltype(get); какой ты тип ожидаешь?
prog.cpp: In instantiation of ‘void foo(T*, Getter, Setter) [with T = Item; Getter = int (Item::*)(); Setter = void (Item::*)(int)]’: prog.cpp:32:35: required from here prog.cpp:22:15: error: invalid static_cast from type ‘int’ to type ‘Ret {aka int (Item::*)()}’ auto value = static_cast<Ret>((instance->*get)()); тебе же компилятор даже все сказал
Обсуждают сегодня