嗨,我正在学习 c++,我读到了诸如 is_const 之类的类型特征。is_const 可以在一行中调用,例如,
cout << is_const<double>::value << endl;
我制作了自己的 is_const 版本,但要测试变量是否为 const,并且可以这样使用,
#include<iostream>
using namespace std;
template<typename T>
struct check_const {
check_const(const T *x): val(std::true_type{})
{ }
check_const(T *x) : val(std::false_type{})
{ }
bool val;
};
int main()
{
const double pi= 3.14;
check_const<double> r(&pi);
cout << r.val << endl; // returns 1
double x= 2.7;
check_const<double> s(&x);
cout << s.val << endl; // returns 0
return(0);
}
我也想在一行中调用 check_const ,但是编译器不断给我错误,例如
"typename not allowed"
当我尝试这样称呼它时
cout << check_const<double> t(&pi)::val << endl;
如何更改 check_const,以便可以在一行中调用它?