title: Unexpected results for yaml-cpp comparisons
body: <p>Consider the following code (yamltest.cpp):</p>
  
  <pre><code>#include &lt;yaml-cpp/yaml.h&gt;
  #include &lt;iostream&gt;
  #include &lt;string&gt;
  
  int main() {
    std::string val = "[1, 2, 3]";
    YAML::Node yn0 = YAML::Load(val);
    YAML::Node yn1 = YAML::Load(val);
  
    std::cout &lt;&lt; "===== yn0 =====\n" &lt;&lt; yn0 &lt;&lt; std::endl;
    std::cout &lt;&lt; "\n"  &lt;&lt; std::endl;
    std::cout &lt;&lt; "===== yn1 =====\n\n" &lt;&lt; yn1 &lt;&lt; std::endl;
  
    std::cout &lt;&lt; std::boolalpha;
    std::cout &lt;&lt; "yn0 == yn0: " &lt;&lt; (yn0==yn0) &lt;&lt; std::endl;
    std::cout &lt;&lt; "yn1 == yn1: " &lt;&lt; (yn1==yn1) &lt;&lt; std::endl;
  
    std::cout &lt;&lt; "yn0 == yn1: " &lt;&lt; (yn0==yn1) &lt;&lt; std::endl;
    std::cout &lt;&lt; "yn1 == yn0: " &lt;&lt; (yn1==yn0) &lt;&lt; std::endl;
    std::cout &lt;&lt; "YAML::Load(val) == YAML::Load(val): " &lt;&lt; (YAML::Load(val)==YAML::Load(val)) &lt;&lt; "\n" &lt;&lt; std::endl;
  
    std::cout &lt;&lt; "yn0 != yn0: " &lt;&lt; (yn0!=yn0) &lt;&lt; std::endl;
    std::cout &lt;&lt; "yn1 != yn1: " &lt;&lt; (yn1!=yn1) &lt;&lt; std::endl;
  
    std::cout &lt;&lt; "yn0 != yn1: " &lt;&lt; (yn0!=yn1) &lt;&lt; std::endl;
    std::cout &lt;&lt; "yn1 != yn0: " &lt;&lt; (yn1!=yn0) &lt;&lt; std::endl;
    std::cout &lt;&lt; "YAML::Load(val) != YAML::Load(val): " &lt;&lt; (YAML::Load(val)!=YAML::Load(val)) &lt;&lt; std::endl;
    std::cout &lt;&lt; std::noboolalpha;
  
    return 0;
  }
  </code></pre>
  
  <p>Along with its associated Makefile:</p>
  
  <pre><code>yt:
      g++ -g -Wall yamltest.cpp -o yt -lyaml-cpp
  
  clean:
      rm yt
  </code></pre>
  
  <p>Running it produces the following results:</p>
  
  <pre><code>$ ./yt 
  ===== yn0 =====
  [1, 2, 3]
  
  
  ===== yn1 =====
  [1, 2, 3]
  
  yn0 == yn0: true
  yn1 == yn1: true
  yn0 == yn1: false
  yn1 == yn0: false
  YAML::Load(val) == YAML::Load(val): false
  
  yn0 != yn0: false
  yn1 != yn1: false
  yn0 != yn1: false
  yn1 != yn0: false
  YAML::Load(val) != YAML::Load(val): false
  </code></pre>
  
  <p>I expected all of the <code>==</code> tests to return <code>true</code> and all of the <code>!=</code> tests to return <code>false</code>, but this is clearly not happening.  So, is this the correct way to compare YAML-CPP objects to test for equivalence?  If not, what is the correct way?</p>
  
  <p>This is running on CentOS 7.x and GCC 9.2.0.</p>