0

こんにちは、私は C++ を学んでおり、is_const などの型特性について読みました。is_const は、次のように 1 行で呼び出すことができます。

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 も1行で呼び出したいのですが、コンパイラは次のようなエラーを出し続けます

"typename not allowed" 

のように呼んでみると

cout << check_const<double> t(&pi)::val << endl;

check_const を 1 行で呼び出せるように変更するにはどうすればよいですか?

4

1 に答える 1