У меня есть функция регистрации, вызываемая в нескольких местах по всему коду. Для каждого журнала я должен предоставить 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-й подход предлагает простоту, но мы передаем константу во время компиляции. Второй подход идеален, но время компиляции, вероятно, увеличится. Это утомительная задача, и я еще не реализовал ни одну из них, поэтому у меня нет контрольной точки.
Будет большим подспорьем, если кто-то сможет ответить на этот вопрос, исходя из своего опыта / знаний.