У меня есть макрос, где один из аргументов является значением перечисления, которое дается без указания области пространства имен. Однако где-то внутри макроса мне нужно получить к нему доступ (очевидно, я должен определить пространство имен там), но я не могу связать имя пространства имен с параметром шаблона. Принимая во внимание следующий пример кода, компилятор жалуется, что pasting :: and Val doesnt give a valid preprocessor token
(он прекрасно работает для объединения get и a для getVal).
namespace TN
{
enum Info
{
Val = 0
};
}
#define TEST(a) TN::Info get ## a(){return TN::##a;}
TEST(Val)
Так есть ли способ заставить эту работу работать без использования другого аргумента и в основном указывать значение, которое будет использоваться дважды (например, #define TEST(a,b) TN::Info get ## a(){return b;}
)?