I want to use template for override operator<<
But on compilation I have this error message: "undefined reference to `operator<<(std::ostream&, Json::Node<(Json::Type)6> const&)" at this line:
std::cout << "root[\"test\"] = " << root["test"] << std::endl;
And when I hard-code the function, it's working
The current template code (don't work)
template <Json::Type T>
std::ostream &operator<<(std::ostream &os, const Json::Node<T> &node)
{
os << "test";
return os;
}
The working hard-code override:
std::ostream &operator<<(std::ostream &os, const Json::Node<Json::Type::Object> &node)
{
os << "test";
return os;
}
json.hpp:
...
template <Json::Type T>
std::ostream &operator<<(std::ostream &os, const Json::Node<T> &node);
std::ostream &operator<<(std::ostream &os, const Json::Node<Json::Type::Object> &node);
...