Какой подход лучше для предоставления функции константы времени компиляции? Аргумент функции против параметра шаблона

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

Будет большим подспорьем, если кто-то сможет ответить на этот вопрос, исходя из своего опыта / знаний.

6
задан iammilind 19 December 2011 в 07:00
поделиться