Published in https://isocpp.org/blog/2016/06/voidparam-puzzle2
In the code:
template <typename T> void Process(const T& t) {}
#define PROCESS(x) Process(x)
PROCESS
can be called with any parameter except void
, for instance code bellow won't compile:
void GetVoid() {}
PROCESS(GetVoid())
What modifications should be made in the implementation of macro PROCESS
that for all parameters other than void
, it works as before,
but call PROCESS(GetVoid())
(as well as PROCESS(void()))
throws exception that void
is not allowed as a parameter.
Function Process
above should remain without modifications.