eos
1.4.0
Loading...
Searching...
No Matches
include
eos
cpp17
clamp.hpp
1
/*
2
* eos - A 3D Morphable Model fitting library written in modern C++11/14.
3
*
4
* File: include/eos/cpp17/clamp.hpp
5
*
6
* Copyright 2018 Patrik Huber
7
*
8
* Licensed under the Apache License, Version 2.0 (the "License");
9
* you may not use this file except in compliance with the License.
10
* You may obtain a copy of the License at
11
*
12
* http://www.apache.org/licenses/LICENSE-2.0
13
*
14
* Unless required by applicable law or agreed to in writing, software
15
* distributed under the License is distributed on an "AS IS" BASIS,
16
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
* See the License for the specific language governing permissions and
18
* limitations under the License.
19
*/
20
#pragma once
21
22
#ifndef EOS_CLAMP_HPP_
23
#define EOS_CLAMP_HPP_
24
25
#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
26
#include <algorithm>
27
namespace
eos
{
28
namespace
cpp17 {
29
using ::std::clamp;
30
}
31
}
32
#else
33
namespace
eos
{
34
namespace
cpp17 {
35
// Returns val constrained to [min, max]
36
template
<
typename
T>
37
constexpr
const
T& clamp(
const
T& val,
const
T& min,
const
T& max)
38
{
39
// this is the implementation that <algorithm> uses:
40
return
((max < val) ? max : (val < min) ? min : val);
41
}
42
}
43
}
44
#endif
45
46
#endif
/* EOS_CLAMP_HPP_ */
eos
Namespace containing all of eos's 3D model fitting functionality.
Generated by
1.9.6