inline void LogicError( Args... args ) { ostringstream os; BuildStream( os, args... ); os << endl; throw std::logic_error( os.str().c_str() ); }
inline void RuntimeError( Args... args ) { std::ostringstream os; BuildStream( os, args... ); os << std::endl; throw std::logic_error( os.str().c_str() ); }
inline void RuntimeError( Args... args ) { ostringstream os; BuildStream( os, args... ); os << endl; throw std::runtime_error( os.str().c_str() ); }
inline void UnrecoverableError( Args... args ) { ostringstream os; BuildStream( os, args... ); os << endl; UnrecoverableException( os.str().c_str() ); }
inline void BuildStream( std::ostringstream& os, T item, Args... args ) { os << item; BuildStream( os, args... ); }
inline string BuildString( Args... args ) { ostringstream os; BuildStream( os, args... ); return os.str(); }
inline void BuildStream ( ostringstream& os, const T& item, const Args& ... args ) { os << item; BuildStream( os, args... ); }