blob: f04827b78aab7b734f478f6c8a0d3344728fc640 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#pragma once
namespace floormat {
template<typename T> T& non_const(const T& value) { return const_cast<T&>(value); }
template<typename T> T& non_const(T& value) = delete;
template<typename T> T& non_const(T&&) = delete;
template<typename T> T& non_const(const T&& value) = delete;
template<typename T> T& non_const_(const T& value) { return const_cast<T&>(value); }
template<typename T> T& non_const_(T& value) { return value; }
template<typename T> T& non_const_(T&& value) { return static_cast<T&>(value); }
template<typename T> T& non_const_(const T&& value) { return static_cast<T&>(const_cast<T&&>(value)); }
} // namespace floormat
|