extensible and typesafe string formatter in c++11