Рассмотрим эту короткую программу, которую я написал:
#include <iostream>
template<bool Debug = false>
constexpr int add(const int& a, const int& b) {
if (Debug)
std::cout << __FUNCTION__ << " called on line " << __LINE__ << '\n';
return (a + b);
}
int main() {
std::cout << add(3, 7) << '\n';
std::cout << add<true>(5, 9) << '\n';
return 0;
}
Он отлично работает и дает правильный результат:
10
add called on line 6
14
Однако я хотел бы, чтобы номер строки, который печатается, был строкой на месте вызова программы, которая в этой программе должна быть строкой 12.
Итак, как я могу использовать __LINE__
или какой-либо другой метод, чтобы получить номер строки, из которой была вызвана функция?
Желаемый результат:
10
add called on line 12
14
Я хотел бы, чтобы он был сгенерирован из самой функции, если это возможно.
-EDIT-
В качестве примечания для читателя: я открыт для любых вариантов, но я ограничен C++17 для моей текущей среды сборки, и я использую Visual Studio.