diff --git a/src/libs/nanotrace/nanotracehr.h b/src/libs/nanotrace/nanotracehr.h index 0698c61e059..23e5896df84 100644 --- a/src/libs/nanotrace/nanotracehr.h +++ b/src/libs/nanotrace/nanotracehr.h @@ -1332,6 +1332,8 @@ private: Internal::appendArguments(traceEvent.arguments, std::forward(arguments)...); } + CategoryFunctionPointer self() { return m_self; } + private: StringType m_name; EnabledEventQueue &m_eventQueue; @@ -1446,6 +1448,11 @@ public: } } + template + [[nodiscard]] Tracer(ArgumentType name, Category &category, Arguments &&...arguments) + : Tracer(std::move(name), category.self(), std::forward(arguments)...) + {} + Tracer(const Tracer &) = delete; Tracer &operator=(const Tracer &) = delete; Tracer(Tracer &&other) noexcept = delete; @@ -1479,7 +1486,7 @@ private: void sendTrace(Arguments &&...arguments) { if (m_name.size()) { - auto category = m_category(); + auto &category = m_category(); if (category.isEnabled == IsEnabled::Yes) { auto duration = Clock::now() - m_start; auto &traceEvent = getTraceEvent(category.eventQueue());