Как?
Я старался:
#define Some(p1, p2) _Some(p1, p2, __FILE__, __func__, __LINE__)
Some _Some(int p1, int p2, const char* file, const char* func, int line) { ... }
но:
some.hpp:16:12: error: macro "Some" requires 3 arguments, but only 1 given
~Some();
^
some.hpp:16:5: error: invalid use of destructor ‘~Some’ as a type
~Some();
^
Определите совершенно отдельный класс, задачей которого является инкапсуляция позиций исходного кода. (Один класс, одна ответственность.) Этот класс может включать функции для форматирования информации по вашим предпочтениям.
Затем определите макрос с абсолютно уникальным именем, чтобы создать класс из __LINE__
и т.п.
Тогда ваш Some
Конструктор класса может просто принять один параметр, который является исходной позицией, и вызывающие абоненты используют макрос в каждом вызове.
Других решений пока нет …