Dans le cadre de la modernisation du code que j'entretiens et a l'aube du C++17 avec ses if constexpr et autres variadic templates, je souhaite remplacer un dans une macro par un appel a une fonction.
Grosso modo, c'est un code tel que celui-ci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
#define THROW(ARGS) std::stringstream str; str << ARGS; throw std::runtime_error(str.str());
L'idee, etant que les utilisateurs fassent un THROW("mon texte " << maValeur). Sauf que pour eviter l'inlining de la stringstream, j'aimerai bouger tout ca dans un appel de fonction et donc remplacer THROW par quelque chose comme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
#define THROW(ARGS) callThrow(REPROCESS(ARGS));
qui remplacerai l'appel precedent par callThrow("mon texte", maValeur);

Faisable ?