Files
Project-Reboot-3.0/Project Reboot 3.0/IsPODType.h
2023-04-15 19:53:58 -04:00

28 lines
625 B
C++

#pragma once
#include "inc.h"
#include "IsPointer.h"
#include "AndOrNot.h"
#include "IsArithmetic.h"
/**
* Traits class which tests if a type is POD.
*/
#if defined(_MSC_VER) && _MSC_VER >= 1900
// __is_pod changed in VS2015, however the results are still correct for all usages I've been able to locate.
#pragma warning(push)
#pragma warning(disable:4647)
#endif // _MSC_VER == 1900
template <typename T>
struct TIsPODType
{
enum { Value = TOrValue<__is_pod(T) || __is_enum(T), TIsArithmetic<T>, TIsPointer<T>>::Value };
};
#if defined(_MSC_VER) && _MSC_VER >= 1900
#pragma warning(pop)
#endif // _MSC_VER >= 1900