What errors do you get?  I think we can fix them by changing this part:

```
#ifdef _MSC_VER
template<typename T, bool isPOD = std::is_pod<T>::value, bool isPointer = std::is_pointer<T>::value>
#else
template<typename T, bool isPOD = __is_pod(T), bool isPointer = std::is_pointer<T>::value>
#endif
```

Since _XBOX is MSVC, we could probably check is_standard_layout, which is really the goal here anyway.  Although, if you have a constructor it's probably good to do things carefully.  Maybe something like:

```
#ifdef _XBOX
// TODO: Other big endian platforms will also have trouble here.
template<typename T, bool isPOD = std::is_standard_layout<T>::value, bool isPointer = std::is_pointer<T>::value>
#ifdef _MSC_VER
// It's a good thing to warn when there's a constructor anyway, so is_pod should be fine for Intel Windows.
template<typename T, bool isPOD = std::is_pod<T>::value, bool isPointer = std::is_pointer<T>::value>
#else
template<typename T, bool isPOD = __is_pod(T), bool isPointer = std::is_pointer<T>::value>
#endif
```

-[Unknown]