I'm trying to cross-compile source code for libbinder, and I'm running into this error while compiling String16.h
template <size_t N>
class StaticString16;
...
template <size_t N>
class StaticString16 : public String16 {
public:
constexpr StaticString16(const char16_t (&s)[N]) : String16(mData), mData(makeStaticData(s)) {}
constexpr StaticString16(const StaticString16<N>& other)
: String16(mData), mData(other.mData) {}
constexpr StaticString16(const StaticString16<N>&&) = 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<N> mData;
};
template <typename F>
StaticString16(const F&)->StaticString16<sizeof(F) / sizeof(char16_t)>;
While compiling, I get this error:
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&)->StaticString16<sizeof(F) / sizeof(char16_t)>;
^
What am I missing/doing wrong here?