S
😂
Size: a a a
S
AN
AN
S
AN
VA
S
L
TG
S
TG
I
template <typename C, typename F>
struct ceraseoperator_wrapper;
#define DECLARE_ceraseoperator_wrapper(cv) template <\
typename R, typename C, typename ... Args\
>\
struct ceraseoperator_wrapper<C, R(Args...) cv> {\
static R function(void* cls, Args ... args) {\
return (*static_cast<cv C*>(const_cast<cv void*>(cls)))(args...);\
}\
}
DECLARE_ceraseoperator_wrapper();
DECLARE_ceraseoperator_wrapper(const);
DECLARE_ceraseoperator_wrapper(volatile);
DECLARE_ceraseoperator_wrapper(const volatile);
#undef DECLARE_ceraseoperator_wrapper
I
AT
template <typename C, typename F>
struct ceraseoperator_wrapper;
#define DECLARE_ceraseoperator_wrapper(cv) template <\
typename R, typename C, typename ... Args\
>\
struct ceraseoperator_wrapper<C, R(Args...) cv> {\
static R function(void* cls, Args ... args) {\
return (*static_cast<cv C*>(const_cast<cv void*>(cls)))(args...);\
}\
}
DECLARE_ceraseoperator_wrapper();
DECLARE_ceraseoperator_wrapper(const);
DECLARE_ceraseoperator_wrapper(volatile);
DECLARE_ceraseoperator_wrapper(const volatile);
#undef DECLARE_ceraseoperator_wrapper
cv
— это существует уже такое?PK
cv
— это существует уже такое?AT
PK
template<int const> void f();
иtemplate<int> void f();
, то это редефинишнPK
AT