Как в макрос вставить функцию из определенного пространства имен?
хочу вот так.
#define FUNCTION ( name, action ) namespace1::##name::foo( action )
ошибка звучит так src/ .cpp:69:25: error: ‘name’ was not declared in this scope #define FUNCTION ( name, action ) namespace1::##name::foo( action )
минимальный пример (рабочий):
namespace cotrol
{
namespace namespace1
{
void foo( int x ) {}
} // namespace namespace1
namespace namespace2
{
void foo( int x ) {}
} // namespace namespace2
} // namespace control
#define ACTION( name, action ) cotrol::name::foo( action )
int main()
{
ACTION ( namespace1, 5 );
ACTION ( namespace2, 10 )
return 0;
}