2015-03-28 16:06 GMT-03:00 Paulo César Pereira de Andrade <paulo.cesar.pereira.de.andrade@xxxxxxxxx>: > Is this expected to not compile with -fno-implicit-templates? > > ---%<--- > $ cat test.cc > #include <string> > std::string test(int i) > { > std::string t; > std::string s = "("; > t = ""; > for (int r = i; r; r>>=1) { > if (r & 1) > t = "1" + t; > else > t = "0" + t; > } > s += t; > s += ")"; > return s; > } > > int > main(int argc, char *argv[]) > { > std::string s = test(16); > return 0; > } > > $ g++ -fno-implicit-templates test.cc > /tmp/ccai7t5T.o: In function `test(int)': > test.cc:(.text+0x9d): undefined reference to > `std::__cxx11::basic_string<char, std::char_traits<char>, > std::allocator<char> > std::operator+<char, std::char_traits<char>, > std::allocator<char> >(char const*, std::__cxx11::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&)' > test.cc:(.text+0xd9): undefined reference to > `std::__cxx11::basic_string<char, std::char_traits<char>, > std::allocator<char> > std::operator+<char, std::char_traits<char>, > std::allocator<char> >(char const*, std::__cxx11::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&)' > collect2: error: ld returned 1 exit status > ---%<--- I will open a gcc bug report. It must be a bug, because if using a temporary to convert "1" or "0" to a std::string it works. Or, explicit converting, e.g.: - t = "1" + t; + t = std::string("1") + t; My C++ foo is not that great, thus asking before opening a bug report. Thanks, Paulo -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct