error: expected constructor, destructor, or type conversion before ';' token (cross-compiling)4

Viewed 36

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?

0 Answers
Related