spdlog, создайте регистратор с помощью std::initializer_list

Я пытаюсь создать регистратор с несколькими приемниками, используя spdlog.

Я успешно создал один, используя явный std::initializer_list:

spdlog::sink_ptr consoleSink = make_shared<spdlog::sinks::stdout_color_sink_mt>();
spdlog::sink_ptr fileSink
     = make_shared<spdlog::sinks::rotating_file_sink_mt>("logs/email.txt", 4_M, 3);
std::initializer_list<spdlog::sink_ptr> sinks = {consoleSink, fileSink};
auto slog = make_shared<spdlog::logger>("email", sinks);

Но по какой-то причине это не работает неявно:

spdlog::sink_ptr consoleSink = make_shared<spdlog::sinks::stdout_color_sink_mt>();
spdlog::sink_ptr fileSink
    = make_shared<spdlog::sinks::rotating_file_sink_mt>("logs/email.txt", 4_M, 3);
auto slog = make_shared<spdlog::logger>("email", {consoleSink, fileSink});

Компиляция говорит:

error: no matching function for call to 'make_shared'
candidate template ignored: substitution failure [with _Tp = spdlog::logger]:
deduced incomplete pack <char const (&)[6], (no value)> for template parameter '_Args'
    make_shared(_Args&&... __args)

0 ответов

Другие вопросы по тегам