Załóżmy, że mam printf
-jak funkcji (używane do logowania) wykorzystując idealne do korespondencji:boost :: Format ze zmiennej liczbie argumentów argumentów szablonu
template<typename... Arguments>
void awesome_printf(std::string const& fmt, Arguments&&... args)
{
boost::format f(fmt);
f % /* How to specify `args` here? */;
BlackBoxLogFunction(boost::str(f).c_str());
}
(nie skompilować tego, ale moje prawdziwe funkcja Wynika to wytyczna)
Jak mogę "rozwinąć" argument zmienny do zmiennej :: :: format zmiennej f
?
Nie wiem, czy to zadziała, ale czy próbowałeś np. 'args ...'? –
@JoachimPileborg Próbowałem tego: http://coliru.stacked-crooked.com/a/9e651d5f7532cc67, to nie działa niestety (chyba że robię to źle). –
W ten sposób rozwijasz argumenty szablonu variadic. Niestety format doładowania używa przeciążonego operatora '%' do oddzielenia argumentów, co nie będzie działać z rozwiniętymi pakietami argumentów. –