cppx-core
Macros
macro-invoke_macro.hpp File Reference

Mostly this is a concession to the idiosyncracies of Visual C++, which still as of its 2017 version is unable to count __VA_ARGS__ as n arguments, and instead counts it as 1. Mostly. But as David Wheeler remarked, one extra level of indirection is the solution to any computer science problem. More...

Go to the source code of this file.

Macros

#define invoke_macro   CPPX_INVOKE_MACRO
 Real name: $invoke_macro (the $ is just removed by Doxygen). More...
 
#define invoke_macro_b   CPPX_INVOKE_MACRO_B
 Real name: $invoke_macro_b (the $ is just removed by Doxygen). More...
 
#define CPPX_INVOKE_MACRO(m, arglist)
 Invokes the specified macro with the specified arguments list. More...
 
#define CPPX_INVOKE_MACRO_B(m, arglist)
 Invokes the specified macro with the specified arguments list. More...
 

Detailed Description

Mostly this is a concession to the idiosyncracies of Visual C++, which still as of its 2017 version is unable to count __VA_ARGS__ as n arguments, and instead counts it as 1. Mostly. But as David Wheeler remarked, one extra level of indirection is the solution to any computer science problem.

Definition in file macro-invoke_macro.hpp.

Macro Definition Documentation

◆ CPPX_INVOKE_MACRO

#define CPPX_INVOKE_MACRO (   m,
  arglist 
)

Invokes the specified macro with the specified arguments list.

Parameters
mThe name of a macro to invoke.
arglistA parenthesized list of arguments. Can be empty.

Definition at line 17 of file macro-invoke_macro.hpp.

◆ CPPX_INVOKE_MACRO_B

#define CPPX_INVOKE_MACRO_B (   m,
  arglist 
)

Invokes the specified macro with the specified arguments list.

Parameters
mThe name of a macro to invoke.
arglistA parenthesized list of arguments. Can be empty.

The only difference between CPPX_INVOKE_MACRO and CPPX_INVOKE_MACRO_B is that they're different macros. One may have to use both in order to guarantee macro expansion in certain (not very well defined) situations. E.g. see <cppx-core/meta-macro/macro-apply.hpp>.

Definition at line 29 of file macro-invoke_macro.hpp.

◆ invoke_macro

#define invoke_macro   CPPX_INVOKE_MACRO

Real name: $invoke_macro (the $ is just removed by Doxygen).

Definition at line 8 of file macro-invoke_macro.hpp.

◆ invoke_macro_b

#define invoke_macro_b   CPPX_INVOKE_MACRO_B

Real name: $invoke_macro_b (the $ is just removed by Doxygen).

Definition at line 9 of file macro-invoke_macro.hpp.