簡體   English   中英

C ++-具有默認參數的模板模板參數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM