我试图定义一个具有类型参数和非类型参数的模板函数。但是,非类型参数的类型取决于类型参数。它看起来像下面这样:
\n\ntemplate<typename T>\nclass A{\n typedef T* Pointer;\n};\n\ntemplate<typename T, A<typename T>::Pointer P>\nT fun(){\n return *P;\n}\n\nint main(){\n fun<int, (int*)0>();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如果我编译代码,编译器会抱怨:
\n\ntest.cpp:6:34: error: template argument 1 is invalid\n template<typename T, A<typename T>::Pointer P>\n ^\ntest.cpp:6:45: error: expected \xe2\x80\x98>\xe2\x80\x99 before \xe2\x80\x98P\xe2\x80\x99\n template<typename T, A<typename T>::Pointer P>\n ^\nRun Code Online (Sandbox Code Playgroud)\n\n我应该怎么做才能让我的代码正常工作?谢谢你!
\n\n附言。上面的代码只是结构的一个例子。我知道代码本身毫无意义。
\n