title: error: expected constructor, destructor, or type conversion before ';' token (cross-compiling)4
body: <p>I'm trying to cross-compile source code for libbinder, and I'm running into this error while compiling String16.h</p>
  <pre><code>template &lt;size_t N&gt;
  class StaticString16;
  
  ...
  
  template &lt;size_t N&gt;
  class StaticString16 : public String16 {
  public:
      constexpr StaticString16(const char16_t (&amp;s)[N]) : String16(mData), mData(makeStaticData(s)) {}
  
      constexpr StaticString16(const StaticString16&lt;N&gt;&amp; other)
          : String16(mData), mData(other.mData) {}
  
      constexpr StaticString16(const StaticString16&lt;N&gt;&amp;&amp;) = delete;
  
      // There is no reason why one would want to 'new' a StaticString16.  Delete
      // it to discourage misuse.
      static void* operator new(std::size_t) = delete;
  
  private:
      const StaticData&lt;N&gt; mData;
  };
  
  template &lt;typename F&gt;
  StaticString16(const F&amp;)-&gt;StaticString16&lt;sizeof(F) / sizeof(char16_t)&gt;;
  </code></pre>
  <p>While compiling, I get this error:</p>
  <pre><code>In file included from utils/String8.cpp:24:0:
  include/utils/String16.h:238:71: error: expected constructor, destructor, or type conversion before ';' token
   StaticString16(const F&amp;)-&gt;StaticString16&lt;sizeof(F) / sizeof(char16_t)&gt;;
                                                                         ^
  </code></pre>
  <p>What am I missing/doing wrong here?</p>