/* * Copyright (c) Contributors to the Open 3D Engine Project * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #ifndef CRYINCLUDE_CRYCOMMON_METAUTILS_H #define CRYINCLUDE_CRYCOMMON_METAUTILS_H #pragma once namespace metautils { // select template struct select; template struct select { typedef Ty1 type; }; template struct select { typedef Ty2 type; }; // is_same // Identifies whether types Ty1 and Ty2 are the same including const & volatile. template struct is_same; template struct is_same { enum { value = true, }; }; template struct is_same { enum { value = false, }; }; // remove_const // Removes top level const qualifier. template struct remove_const { typedef Ty type; }; template struct remove_const { typedef Ty type; }; template struct remove_const { typedef Ty type[]; }; template struct remove_const { typedef Ty type[N]; }; // is_const // Determines whether type Ty is const qualified. template struct is_const { enum { value = false }; }; template struct is_const { enum { value = true }; }; template struct is_const { enum { value = false }; }; template struct is_const { enum { value = true }; }; template struct is_const { enum { value = false }; }; }; #endif // CRYINCLUDE_CRYCOMMON_METAUTILS_H