I just want a way to have a function ( or anything else ) which have one standard argument and another one coming from the operator <<.
my_comp(argument) << "HelloWorld" ;
The goal is to purpose a Logger class that any other class can easily extends and call its unique functionality with a single line of code.
The Logger class mainly use boost/log/ packages, and its unique functionally may be write many time. This is why I want it in a single line.
I do not authorize myself to use the function :
BOOST_LOG_SEV(argument_boost_dependent, argument_logger_class_dependent) << "something"
because I do not want any dependency with boost on my interface.
So I'm trying to do something like this :
loggit(argument_logger_class_dependent) << "something"
and just call BOOST_LOG_SEV
with boosts arguments in the class implementation
For now I just have a struct that extends std::streambuf so it only work like this : loggit << "HelloLog"
or by overriding operator () loggit(severity_level::warning)
but both together do not work.
If anyone know how to add this sweety argument, would be welcome :)
Thanks
#include <iostream>
struct foo
{
int bar;
foo(int bar) : bar{ bar } {};
foo& operator<<(std::string baz)
{
std::cout << bar << ' ' << baz;
return *this;
}
};
int main()
{
foo(42) << "Hells in the World!\n";
}
Makes sense? No? Question answered?