if thattemplate is causing this error, why does the compiler show this class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > ?
what does the compiler mean by all of those unrelated words showing up in the error? Makes the debugging harder for me :(
what does the compiler mean by all of those unrelated words showing up in the error?
This is not the compiler talking, since this is a linker error the error is actually being generated by the linker. Your linker talking about the std::string class, which is derived from st::basic_string<>.
what is this cdec1
That's cdecl (lower case L). And that is one of the many different calling conventions used by the compiler and linker.
this is the template where it gets the toString()
And where is the actual implementation, and remember with templates the implementation and definition must be in the same compilation unit.
#ifndef BOOK_STRINGHELPERS_HPP
#define BOOK_STRINGHELPERS_HPP
#include <sstream>
// Since std::to_string doesn't work on MinGW we have to implement
// our own to support all platforms.
template <typename T>
std::string toString(const T& value);
#include <Book/StringHelpers.inl>
#endif // BOOK_STRINGHELPERS_HPP