Описание тега std-source-location

Конструкция стандартной библиотеки C++ для доступа к расположению строки исходного кода во время компиляции.
7 ответов

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

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

Требует ли C++20 хранения исходного кода в файлах?

Немного странный вопрос, однако, если я правильно помню, исходный код C++ не требует файловой системы для хранения своих файлов. Наличие компилятора, который сканирует рукописные документы через камеру, будет соответствующей реализацией. Хотя практи…
18 авг '19 в 23:40
0 ответов

Почему геттеры std::source_location не помечены как [[nodiscard]]?

Согласно:https://en.cppreference.com/w/cpp/utility/source_location геттеры не помечены как [[nodiscard]]. constexpr uint_least32_t line() const noexcept; constexpr uint_least32_t column() const noexcept; constexpr const char* file_name() const noexc…
23 апр '20 в 05:59
2 ответа

consteval wrapper против source_location

Я попробовал следующий код, используя GCC10 в режиме C++20: consteval std::experimental::source_location there() { return std::experimental::source_location::current(); // Line 3 } void f(const std::experimental::source_location& a = there()) //…
29 июн '20 в 01:37
0 ответов

source_location::current() оценивается как аргумент шаблона без типа по умолчанию

[support.srcloc] представляет source_location::current: Любой звонок current который появляется как аргумент по умолчанию ([dcl.fct.default]) или как его подвыражение, должен соответствовать местоположению вызова функции, которая использует аргумент…
11 окт '20 в 07:59
1 ответ

C++20 std::source_location дает разные номера столбцов между бесплатными функциями и функциями шаблона

Рассмотрим функцию шаблона и бесплатную функцию: #include <iostream> #include <source_location> auto g(auto...) { std::cout << std::source_location::current().column() << "\n"; } auto f() { std::cout << std::source_loca…
1 ответ

Как получить исходное местоположение из функции в качестве аргумента без использования статической функции-члена `current`?

Я хочу свою функцию get_source вернуть std::source_location type, взяв в качестве аргумента другую функцию. Например, у меня есть функция с именем helloMessage а также sumOf со следующими типами аргументов и типом возвращаемого значения: void helloM…
02 май '21 в 09:58
1 ответ

Объединение адаптеров диапазонов и std::source_location дало странные результаты

Рассмотрим следующий бесполезный код : #include <ranges> #include <source_location> #include <iostream> int main() { auto lines = std::views::iota(0, 5) | std::views::transform( [](int, const std::source_location& location = st…
17 авг '21 в 19:39
1 ответ

Как отключить копирование для конструкторов с помощью std::source_location или обойти проблему?

Я пытаюсь добавить инструментарий к широко используемому классу шаблонов в моем продукте. Я сейчас на VS 2019 (16.10.4) с участием /std:c++17. Новая функция - отличное дополнение для задач, в решении которых я заинтересован. Пока и std::experimental…
1 ответ

оператор [] исходное местоположение сайта вызывающего абонента текущее обходное решение

к сожалению, текущее местоположение источника нельзя использовать непосредственно в списке параметров operator[], поскольку этот оператор должен иметь только один аргумент. Однако есть ли обходной путь, чтобы я мог получить исходную строку вызывающе…
0 ответов

source_location не является членом std

Я получаю эту ошибку" source_location is not a member of std" в этой простой программе, и я понятия не имею, почему. Я пытаюсь работать с исходным местоположением, но не могу правильно включить заголовок. Я использую Visual Studio 2019 версии 16.10.…
20 июл '21 в 21:37
1 ответ

std::source_location как параметр шаблона не типа

В моем бесконечном стремлении раздвинуть пределы того, что можно использовать в качестве параметра шаблона, отличного от типа, я пытался понять, могу ли я использовать как параметр шаблона, не являющийся типом. Это не удалось со странным сообщением,…
08 дек '20 в 17:01
0 ответов

Замена __LINE__ и __FUNCSIG__ новым std::source_location в макросе

Добавлен С++ 20std::source_location как замена макросов отладки__LINE__,__FILE__, и т. д. Отлично. У меня есть макрос, который создает объявление переменной для регистрации и профилирования блока кода с использованием указанных макросов: #define TOK…
25 дек '22 в 15:07
0 ответов

Расположение источника на месте вызова и ntps: странные результаты и возможная ошибка компилятора?

Рассмотрим следующий код, который используетsource_location: // Preamble #include <iostream> #include <source_location> // Using a function constexpr std::size_t function( std::size_t line = std::source_location::current().line() ) noexc…
02 фев '23 в 03:24
3 ответа

создание std::source_location с пользовательскими значениями

Я интегрирую стороннюю библиотеку в свой проект. Библиотека предоставляет перехватчики для перенаправления сообщений журнала и предоставляет структуру с файлом, строкой, серьезностью, сообщением и т. д. Мой проект используетдля ведения журнала. Как …
31 июл '23 в 00:38
0 ответов

Нетиповой параметр шаблона source_location C++20

Я пытался найти способы использованияstd::source_location::current(), когда я наткнулся на этот конкретный ответ в теме. Я попробовал запустить код на godbolt с помощьюx86-64 gcc 13.1и-O3 -std=c++20 -Wall -Wextra -Wpedantic, но он даже не компилируе…
30 май '23 в 08:38
2 ответа

Как передать CMAKE_SOURCE_DIR CMake в исходные файлы C++?

В своей программе на C++ я используюдля вывода журнала. Напечатанный путь в настоящее время является абсолютным. Проект создан с помощью CMake. Я хочу сократитьstd::source_locationпуть согласно переменной CMake. Как я могу получить доступCMAKE_SOURC…
19 апр '23 в 20:23
0 ответов

С++ правильное использование std::source_location

Я пытаюсь использовать в сочетании с механизмом регистрации. Однако оказывается, что это указывает не на то место. Для справки ссылка на проводник компилятора https://godbolt.org/z/Wx3har1zG. Проблема заключалась в том, что я мог найти способ объеди…
29 авг '23 в 15:02