У меня есть функция регистрации, вызываемая в нескольких местах кода.Для каждого журнала я должен указать 2 константы времени компиляции .Для этого есть 2 подхода:
(1) Аргумент функции :
template<typename T>
void log (const T &obj, const int LINE, const int COUNT)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
вызвать его как
log(str, __LINE__, __COUNTER__);
(2) Параметр шаблона :
template<typename T, int LINE, int COUNT>
void log (T &obj)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
назовите его как
log<__LINE__, __COUNTER__>(str);
Я не могу принять решение, потому что 1-й подход предлагает простоту, но мы передаем константу ввремя компиляции.Второй подход идеален, но время компиляции, вероятно, увеличится.Это утомительное занятие, и я еще не выполнил ни одного из них, поэтому у меня нет отметки.
Будет очень полезно, если кто-то ответит на это из своего опыта / знаний.