[英]C++ - Template template parameter with default argument doesn't work
所以我有一個形式的類:
template <typename T, template <typename T> class Container = std::vector>
class MyArray : Container<T>
{
...
}
現在,我嘗試將其實例化為
template <typename T>
class MyClass
{
MyArray<T> array;
}
這產生一個錯誤:
error: type/value mismatch at argument 2 in template parameter list for 'template<class T, template<class T> class Container> class MyArray'
MyArray<T> y;
和它指向>
的MyArray<T>
怎么了 為什么沒有默認的模板參數?
謝謝。
問題在於std::vector
需要兩個模板參數:type和allocator。 許多其他容器類型將采用其他策略參數,這些參數具有默認值,使您可以像T<U>
一樣實例化。
為了支持這一點,您可以說您的模板模板參數應該使用可變參數模板( typename...
) 至少使用一個模板參數:
template <typename T, template <typename, typename...> class Container = std::vector>
class MyArray : Container<T>
{
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.