Question: I've read some articles on SFINAE, but can't find a solution for my case. Here's what I want to do:

```
#include <type_traits>

struct CByteArray {};
struct HLVariant {
    HLVariant() {}
    HLVariant(const HLVariant&) {}
    HLVariant(const CByteArray&) {}

    };

template <typename T>
struct Serializer
{
    static inline typename std::enable_if<std::is_pod<T>::value, CByteArray>::type serialize(const T& value)
    {
        static_assert(std::is_pod<T>::value, "Not a POD type");
        return CByteArray();
    }

    static inline typename std::enable_if<!std::is_pod<T>::value, CByteArray>::type serialize(const T& value)
    {
        return Serializer<HLVariant>::serialize(HLVariant(value));
    }
};

template <>
struct Serializer<HLVariant>
{
    static inline CByteArray serialize(const HLVariant& value)
    {
        return CByteArray();
    }
};

int main()
{
    int i = 0;
    Serializer<int>::serialize(i);
    Serializer<CByteArray>::serialize(CByteArray());
    Serializer<HLVariant>::serialize(HLVariant());

    return 0;
}

```

But, of course, I'm getting `error C2039: 'type' : is not a member of 'std::enable_if<false,CByteArray>'`

How to achieve what I want?

Also, would it be possible to reorganize the `Serializer` somehow, so that the template parameter could be deduced implicitly - `Serializer::serialize(i);` instead of `Serializer<int>::serialize(i);`?

Answer: 
On GAE the [incoming request can not be longer](https://cloud.google.com/appengine/docs/quotas#Requests) than 32Mb. This includes the whole request size (command, path, headers), not only POST body. This is language independent.
As mentioned in Google doc

> 
> Static data limit
> In all languages except Go, no single static data file can be larger than 32MB. The limit for Go is 64MB.
> 
> 
>