Я программировал сетевой симулятор ns3, написанный на c ++. Существует множество функций для условной регистрации выходных данных в зависимости от конфигурации системы. (т. е. инструкция для регистрации сообщения всегда есть, но если я отключу отладку, некоторые сообщения не появятся).
Вызов одной из этих функций может выглядеть следующим образом:
int n=42;
NS_LOG_LOGIC("the answer is " << n);
Это чрезвычайно полезно, поскольку позволяет мне напрямую объединять много разных видов данных в одну строку для регистрации.
Теперь я пытаюсь написать свою собственную функцию ведения журнала, чтобы дать мне больше контроля над тем, где регистрируются сообщения, и чтобы я мог вставлять уникальный идентификатор и метку времени перед каждым сообщением, чтобы я знал, откуда и когда оно пришло.
У меня такой вопрос: как мне создать функцию в c ++, которая может быть вызвана таким образом? Я не могу найти источник для показанной функции и не видел других примеров таких функций.
Примечание. Обычная конкатенация '+' недостаточно хороша, поскольку я хочу иметь возможность легко объединять несколько типов данных. Я знаю, что есть другие способы сделать это, но я также просто хочу выяснить, что происходит в функции выше!
Спасибо:)