Я пишу функцию журнала, которая принимает строку формата, и переменное количество аргументов и отражает std :: source_location . Это не просто, поэтому я попробовал FormatWithLocation , описанное в том, как использовать Source_location в функции переменного шаблона? - Что работает. И я на самом деле не вижу способа создать строку времени компиляции и использовать ее во время выполнения без жесткой кодирования строки. Я прибегал к кучу хитростей, включая использование Std :: Array для строк времени компиляции, но для тех, мне нужно знать размер заранее; При любой другой структуре данных я не могу использовать данные с размышлениями о куче компиляции в мире времени выполнения (понятно). < /p>
Я пишу функцию журнала, которая принимает строку формата, и переменное количество аргументов и отражает std :: source_location . Это не просто, поэтому я попробовал FormatWithLocation , описанное в том, как использовать Source_location в функции переменного шаблона? - Что работает. И я на самом деле не вижу способа создать строку времени компиляции и использовать ее во время выполнения без жесткой кодирования строки. Я прибегал к кучу хитростей, включая использование Std :: Array для строк времени компиляции, но для тех, мне нужно знать размер заранее; При любой другой структуре данных я не могу использовать данные с размышлениями о куче компиляции в мире времени выполнения (понятно). < /p> [code]#include #include #include #include
// TODO: avoid hardcoded size constexpr size_t N = 61;
struct StringWithSourceLocation { template static consteval std::array toArray( const char* const inputText) { std::array array{}; for (size_t i = 0; i < inputLength; i++) array[i] = inputText[i]; return array; }