@derickflorian While some comdemn it, you can use macro in fancy ways, casting to a type or doing fancy things like passing the type as parameter or building a function generator (not so good).
The important is make it always work as a function emulating return with parenthesis operator (last member as return) or passing the calling to the correct real function.