Можно ли разместить макрос в пространстве имен в C ++?

Мое приложение использует другой вывод, чем стандартный вывод для регистрации информации, поэтому я написал свой собственныйLog(), Error(), Panic() а такжеAssert() функции. Чтобы организовать вещи хорошо, я вложил все вещи отладки вDebug Пространство имен.

Это будет иметь больше смысла дляAssert() Функция также обеспечивает исходный файл и номер строки, что возможно только с помощью__LINE__ а также__FILE__ макросы. Однако довольно неприятно, неэффективно и т. Д. Всегда нужно указывать эти два параметра.

Вот так будет выглядеть мой код:

namespace Debug {
   void Assert (int condition, std::string message, std::string file, int line);
}

У меня вопрос, можно ли поместить макрос, который включает эти два параметра внутриDebug Пространство имен? Как это:

namespace Debug {
   void Assert_ (int condition, std::string message, std::string file, int line);
   #define Assert(a,b) Assert_(a, b, __FILE__, __LINE__)
}

// .... Somewhere where I call the function ....
Debug::Assert (some_condition, "Some_condition should be true");

// Output: Assertion failed on line 10 in file test.cpp:
//           Some_condition should be true

Это действительный с ++? Если нет, есть ли способ заставить эту работу?