Quick C++ question for C++ experts :)

Paulo César Pereira de Andrade paulo.cesar.pereira.de.andrade at gmail.com
Sat Mar 28 19:06:02 UTC 2015


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 am trying to fix a package, but it is documented to
require -fno-implicit-templates and instantiate templates
in one of the sources, but it instantiates templates for
its own types.

Thanks,
Paulo


More information about the devel mailing list