É possível colocar uma macro em um namespace em c ++?

Meu aplicativo usa outra saída do que a saída padrão para registrar informações, e é por isso que eu escrevi meu próprioLog(), Error(), Panic() eAssert() funções. Para organizar as coisas bem, eu incluo todas as coisas de depuração em umDebug namespace.

Faria mais sentido para oAssert() função para também fornecer um arquivo de origem e um número de linha, que só é possível__LINE__ e__FILE__ macros. No entanto, é bastante desagradável, ineficiente, etc ... sempre ter que especificar esses dois parâmetros.

Então é assim que meu código ficaria:

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

A minha pergunta é, é possível colocar uma macro que inclua esses dois parâmetros dentro doDebug namespace? Como isso:

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

Isto é válido em c ++? Se não, existe alguma maneira de fazer isso funcionar?

questionAnswers(5)

yourAnswerToTheQuestion