2
我想寫這作爲模板參數的智能指針:C++中的模板參數
template <class T>
struct FooStruct {
template <void F(std::unique_ptr<T> Object)>
void FooMethod()
{
//....
}
};
然後,一個錯誤出現:
error C2993: 'std::unique_ptr<T>' : illegal type for non-type template parameter 'Object'
這種方法工作得很好:
template <class T>
struct FooStruct {
template <class UT,void F(UT Object)>
void FooMethod()
{
//....
}
};
如果我通過std::unique_ptr<Person>
,UT
參數FooMethod()
那麼每一個事情工作正常。
是否有一種特殊的方式將智能指針作爲模板參數傳入?
是否包含' '在'FooStruct'的定義之前? –
dyp
我想答案是:'template)>'是合法的。它根據[temp.param]/8衰減到'template )>',並且允許*指向函數*作爲非類型模板參數的類型[temp.param/4。您可能遇到了編譯器錯誤。 –
dyp