1 // Copyright (c) 2011 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 PDFIUM_THIRD_PARTY_BASE_TEMPLATE_UTIL_H_ 6 #define PDFIUM_THIRD_PARTY_BASE_TEMPLATE_UTIL_H_ 7 8 #include <cstddef> // For size_t. 9 10 namespace pdfium { 11 namespace base { 12 13 template<class T, T v> 14 struct integral_constant { 15 static const T value = v; 16 typedef T value_type; 17 typedef integral_constant<T, v> type; 18 }; 19 20 typedef integral_constant<bool, true> true_type; 21 typedef integral_constant<bool, false> false_type; 22 23 template <class T, class U> struct is_same : public false_type {}; 24 template <class T> struct is_same<T,T> : true_type {}; 25 26 template<bool B, class T = void> 27 struct enable_if {}; 28 29 template<class T> 30 struct enable_if<true, T> { typedef T type; }; 31 32 } // namespace base 33 } // namespace pdfium 34 35 #endif // PDFIUM_THIRD_PARTY_BASE_TEMPLATE_UTIL_H_ 36