#include <type_traits>

namespace tile {
template<typename T>
struct remove_cvref {
    using type = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
};

template<typename T>
using remove_cvref_t = typename remove_cvref<T>::type;

template<typename T>
using remove_reference_t = typename std::remove_reference<T>::type;

// enable_if_t
template<bool Enable, typename T = void>
using enable_if_t = typename std::enable_if<Enable, T>::type;

template<typename T>
using decay_t = typename std::decay<T>::type;

}// namespace tile
