Apollo 10.0
自动驾驶开放平台
comparison_traits.h
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2018 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16
17#pragma once
18
19#include <cmath>
20#include <limits>
21
22namespace apollo {
23namespace perception {
24namespace base {
25
26// Integral type equal
27template <typename T>
28typename std::enable_if<std::is_integral<T>::value, bool>::type Equal(
29 const T& lhs, const T& rhs) {
30 return lhs == rhs;
31}
32
33// Floating point type equal
34template <typename T>
35typename std::enable_if<std::is_floating_point<T>::value, bool>::type Equal(
36 const T& lhs, const T& rhs) {
37 return std::fabs(lhs - rhs) < std::numeric_limits<T>::epsilon();
38}
39
40} // namespace base
41} // namespace perception
42} // namespace apollo
std::enable_if< std::is_integral< T >::value, bool >::type Equal(const T &lhs, const T &rhs)
class register implement
Definition arena_queue.h:37