Devo dichiarare una classe in grado di memorizzare diversi tipi di contenitori. Sarebbe bello se potesse gestire std :: bitset e std :: array. Tuttavia, queste due classi richiedono un diverso argomento del template ... E 'possibile (e possibilmente, in che modo) usare classi template template e modelli variadic per dichiarare questo tipo di classe?Dichiarare oggetto "contenitore" da modelli template classe e modelli variadic
Esempio (ma sbagliato):
template<template <typename..., std::size_t> class Container,
std::size_t N,
typename... Args>
class Base_Class
{
...
Container<Args..., N/2> container;
};
Il compilatore lamenta che N/2 non è un tipo. Ovviamente, sia per std :: array che per std :: bitset ho bisogno che la dimensione sia l'ultimo parametro del template ... È possibile codificare questa follia?
Grazie!
MODIFICA: Per quanto mi riguarda, il problema principale è che i modelli variadici possono essere espansi solo a destra, quindi il parametro variadic deve essere l'ultimo. Qualcuno sa se ci sono piani per consentire la seguente sintassi in C++ 17?
template<typename... Args, typename T>
struct A
{};
quale compilatore ? – Walter
Dà errore sia con g ++ che clang (ovviamente con -std = C++ 11/14 parametro) – dodomorandi