title: How to make base template class functions visible in derived class?
body: <p>In "Effective C++" Item 44:Factor parameter-independent code out of
  templates.I find some difference between its English version and Chinese Version translated by Hou Jie(侯捷).  </p>
  
  <p>This is the English Version I found in page 214:</p>
  
  <pre><code>template&lt;typename T&gt; // size-independent base class for
  class SquareMatrixBase { // square matrices
  protected:
  ...
  void invert(std::size_t matrixSize); // invert matrix of the given size
  ...
  };
  template&lt;typename T, std::size_t n&gt;
  class SquareMatrix: private SquareMatrixBase&lt;T&gt; {
  private:
  using SquareMatrixBase&lt;T&gt;::invert; // make base class version of invert
  // visible in this class; see Items 33
  // and 43
  public:
  ...
  void invert() { invert(n); } // make inline call to base class
  }; // version of invert  
  </code></pre>
  
  <p>In its Chinese Version translated by Hou Jie(侯捷) .The previous lines of code are almost the same except the second last line of code:  </p>
  
  <pre><code>void invert() { this-&gt;invert(n); }  
  </code></pre>
  
  <p>In the Chinese Version, Hou Jie explains the reason to use <code>this-&gt;invert(n)</code> instead of <code>invert(n)</code>: the function names of templatized base classes will be hidden in the derived classes.<br>
  I think this may be wrong,because <code>using SquareMatrixBase&lt;T&gt;::invert;</code> has been added in other part of the derived class.  </p>
  
  <p>But I think as a famous translator,Hou Jie won't easily make such an obvious mistake.Is he really wrong this time?</p>