The following code gives different results with the g ++ 7 compiler and Apple clang ++. Have I really encountered an error in setting the output of bool when using std::boolalpha , or did I make a mistake?
#include <string> #include <sstream> #include <iostream> #include <iomanip> template<typename T> void print_item(std::string name, T& item) { std::ostringstream ss; ss << std::left << std::setw(30) << name << "= " << std::right << std::setw(11) << std::setprecision(5) << std::boolalpha << item << " (blabla)" << std::endl; std::cout << ss.str(); } int main() { int i = 34; std::string s = "Hello!"; double d = 2.; bool b = true; print_item("i", i); print_item("s", s); print_item("d", d); print_item("b", b); return 0; }
The difference is as follows:
// output from g++ version 7.2 i = 34 (blabla) s = Hello! (blabla) d = 2 (blabla) b = true (blabla) // output from Apple clang++ 8.0.0 i = 34 (blabla) s = Hello! (blabla) d = 2 (blabla) b = true (blabla)
c ++ io c ++ 11 stringstream ostringstream
Chiel
source share