1//===-- sanitizer_type_traits.h ---------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// Implements a subset of C++ type traits. This is so we can avoid depending 11// on system C++ headers. 12// 13//===----------------------------------------------------------------------===// 14#ifndef SANITIZER_TYPE_TRAITS_H 15#define SANITIZER_TYPE_TRAITS_H 16 17namespace __sanitizer { 18 19struct true_type { 20 static const bool value = true; 21}; 22 23struct false_type { 24 static const bool value = false; 25}; 26 27// is_same<T, U> 28// 29// Type trait to compare if types are the same. 30// E.g. 31// 32// ``` 33// is_same<int,int>::value - True 34// is_same<int,char>::value - False 35// ``` 36template <typename T, typename U> 37struct is_same : public false_type {}; 38 39template <typename T> 40struct is_same<T, T> : public true_type {}; 41 42} // namespace __sanitizer 43 44#endif 45