title: Override templated method from library with my own implementation
body: <p>Google test declares a templated method <code>PrintTo</code>:</p>
  
  <pre><code>template &lt;typename T&gt;
  void PrintTo(const T&amp; value, ::std::ostream* os);
  </code></pre>
  
  <p>There are several overloads without template. I also added overloads for my custom types.</p>
  
  <p>My problem is that I dont like the default templated method provided by google and instead I would like to implement it like this:</p>
  
  <pre><code>template&lt;typename T&gt;
  void PrintTo(const T &amp;val, ::std::ostream *os)
  {
      QString str;
      QDebug(&amp;str) &lt;&lt; val;
      *os &lt;&lt; qUtf8Printable(str);
  }
  </code></pre>
  
  <p>This would solve the problem for many Qt types. I cannot change the implemention inside google tests code. I need to reimplement it in my own code.</p>
  
  <p>Using my template method I get this compiler error:</p>
  
  <pre><code>include/gtest/gtest-printers.h:707:22: error: call of overloaded ‘PrintTo(const QChar&amp;, std::ostream*&amp;)’ is ambiguous
       PrintTo(value, os);
                        ^
  include/gtest/gtest-printers.h:707:22: note: candidates are:
  include/gtest/gtest-printers.h:454:6: note: void testing::internal::PrintTo(const T&amp;, std::ostream*) [with T = QChar; std::ostream = std::basic_ostream&lt;char&gt;]
   void PrintTo(const T&amp; value, ::std::ostream* os) {
        ^
  In file included from tstgoogletest.cpp:51:0:
  googletestqttypes.h:24:6: note: void PrintTo(const T&amp;, std::ostream*) [with T = QChar; std::ostream = std::basic_ostream&lt;char&gt;]
   void PrintTo(const T &amp;val, ::std::ostream *os)
        ^
  </code></pre>
  
  <p>Is it possible to "overload" the templated method with my custom implementation without listing every type I want to use?</p>
  
  <p>QDebug already supports thousands of types and I dont want to miss that feature!</p>