0

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);
...
gabriel
  • 42
  • 9

0 Answers0