我需要聲明一個可以存儲不同類型容器的類。即如果它可以處理std :: bitset和std :: array將會很好。 但是,這兩個類需要不同的模板參數... 使用模板化模板類和可變模板來聲明這種類是否可能(以及可能如何)?聲明來自模板模板類和可變參數模板的「容器」對象
實施例(但錯誤):
template<template <typename..., std::size_t> class Container,
std::size_t N,
typename... Args>
class Base_Class
{
...
Container<Args..., N/2> container;
};
編譯器抱怨N/2不是一個類型。顯然,對於std :: array和std :: bitset,我需要size是最後一個模板參數......是否有可能編寫這個瘋狂?
謝謝!
編輯: 就我而言,主要問題是可變參數模板只能在右側展開,因此可變參數必須是最後一個參數。任何人都知道是否有計劃允許在C++ 17中使用以下語法?
template<typename... Args, typename T>
struct A
{};
哪種編譯? – Walter 2015-04-03 09:57:10
它給g ++和clang都帶來錯誤(顯然使用-std = C++ 11/14參數) – dodomorandi 2015-04-03 10:04:03