Use static_assert to check types passed to macro

c, c++, g++, static-assert, visual-studio-2010

Solution

I found this to be the cleanest, using @UncleBens suggestion:

#include <type_traits>

static_assert(std::is_same<decltype(retval), bool>::value, "retval must be bool");

Problem

I unfortunately have several macros left over from the original version of my library that employed some pretty crazy C. In particular, I have a series of macros that expect certain types to be passed to them. Is it possible to do something along the lines of: ``` static_assert(decltype(retval) == bool); ``` And how? Are there any clever alternatives? Yes I'm aware macros are bad. I'm aware C++ is not C, etc. Update0 Here is some related code, and the source file. Suggestions are welcome. The original question remains the same.

Original source

Related problems