在研究一些类型特征时,我正在搜索 std::is_const
template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS is_const : _BoolConstant<__is_const(_Tp)> { };
我知道它是内置编译器,但想知道它是如何实现的?
Clang
标头仅使用 SFINAE 来选择它是否是常量(带有 const T
的模板实现)或不是(另一个模板实现),来自 Clang 源代码中的 is_const.h:
template <class T> struct is_const : cpp::false_type {};
template <class T> struct is_const<const T> : cpp::true_type {};