«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как использовать `std :: source_location` с функциями шаблона вариального шаблона в C ++ 20?

Как использовать `std :: source_location` с функциями шаблона вариального шаблона в C ++ 20?

Опубликовано в 2025-03-25
Просматривать:529

How to Use `std::source_location` with Variadic Template Functions in C  20?

разрешение мест исходного местоположения в функциях переменного шаблона

В C 20, сведения о контексте вызовой для захвата становятся возможными с помощью std :: source_location. Однако использование его с помощью функций переменного шаблона оказалось сложным из -за позиционирования параметра Source_location.

Положение Prescament

неизменно, вариадные параметры обитают в конце списка параметров. Это препятствовало использованию std :: source_location по следующим причинам:

  • first попытка:

    template 
    void debug(Args&&... args, const std::source_location& loc = std::source_location::current());

    , потому что параметры вариадического void debug (const std :: source_location & loc = std :: source_location :: current (), Args && ... args);

  • вводит двусмысленность для абонентов, поскольку он вмещает неожиданный параметр. Руководство:
  • Template struct Debug { Debug (ts && ... ts, const std :: source_location & loc = std :: source_location :: current ()); }; Шаблон Debug (ts && ...) -> debug ; { отладка (5, «a», 3.14f, "foo"); }

    template 
    void debug(const std::source_location& loc = std::source_location::current(),
             Args&&... args);

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3