template_util.h revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BASE_TEMPLATE_UTIL_H_
6#define BASE_TEMPLATE_UTIL_H_
7
8namespace base {
9
10// template definitions from tr1
11
12template<class T, T v>
13struct integral_constant {
14  static const T value = v;
15  typedef T value_type;
16  typedef integral_constant<T, v> type;
17};
18
19template <class T, T v> const T integral_constant<T, v>::value;
20
21typedef integral_constant<bool, true> true_type;
22typedef integral_constant<bool, false> false_type;
23
24template <class T> struct is_pointer : false_type {};
25template <class T> struct is_pointer<T*> : true_type {};
26
27}  // namespace base
28
29#endif
30