#pragma once
#include <type_traits>
#include <iostream>
template<typename>
struct is_const
: public std::false_type { };
template<typename _Tp>
struct is_const<const _Tp> //方便理解我这样写
//struct is_const<_Tp const> 源码是这样写的
: public std::true_type { };
void TestIsConst()
{
std::cout << is_const<int>::value << std::endl;
std::cout << is_const<int const>::value << std::endl;
std::cout << is_const<const int>::value << std::endl;
std::cout << is_const<const int&>::value << std::endl;
}
上面的运行结果竟然是 0 1 1 0 而 cosnt int& 竟然匹配不到 const _Tp。