Как использовать source_location в функции шаблона variadic?

Функция C ++ 20 std::source_location используется для сбора информации о контексте, в котором вызывается функция. Когда я пытался использовать его с функцией шаблона переменной, я столкнулся с проблемой: я не вижу места для размещения параметра source_location.

Следующее не работает, потому что переменные параметры должны быть в конце:

// doesn't work
template 
void debug(Args&&... args,
           const std::source_location& loc = std::source_location::current());

Следующее также не работает, потому что вызывающий будет облажен параметром, вставленным между: 119]

// doesn't work either, because ...
template 
void debug(const std::source_location& loc = std::source_location::current(),
           Args&&... args);

// the caller will get confused
debug(42); // error: cannot convert 42 to std::source_location

Мне сообщили в комментарии , что std::source_location работает без проблем с вариационными шаблонами, но я изо всех сил пытаюсь выяснить, как. Как я могу использовать std::source_location с функциями шаблона Variadic?

25
задан einpoklum 18 August 2019 в 21:21
поделиться