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