全部代码
#pragma once
#include <type_traits> // 可以继续添加
namespace tinySTL {
// enable_if
template<bool B, typename T = void>
struct enable_if {};
template<typename T>
struct enable_if<true, T> {
using type = T;
};
template<bool B, typename T = void>
using enable_if_t = typename enable_if<B, T>::type;
// remove_reference
template<typename T>
struct remove_refernece {
using type = T;
};
template<typename T>
struct remove_refernece<T&> {
using type = T;
};
template<typename T>
struct remove_refernece<T&&> {
using type = T;
};
template<typename T>
using remove_reference_t = typename remove_refernece<T>::type;
// true_type & false_type
template <typename T, T v>
struct m_integral_constant {
static constexpr T value = v;
};
template<bool b>
using m_bool_constant &#