Re: количество аргументов из шаблона
От: rg45 СССР  
Дата: 20.11.19 19:38
Оценка: 11 (3)
Здравствуйте, Dair, Вы писали:

  D>Как бы такое написать
D>
D>template <typename Ret, typename Arg, size_t N>
D>class Foo {
D>public:
D>    virtual ~Foo() = default;
D>    virtual Ret bar( вот тут непонятно что написать, но с участием Arg ) = 0;
D>};
D>


D>Чтобы пользоваться этим примерно так:


D>
D>class S3 : public Foo<void, int, 3> {
D>public:
D>    void bar(int a1, int a2, int a3) override {
D>    }
D>};

D>class S5 : public Foo<void, int, 5> {
D>public:
D>    void bar(int a1, int a2, int a3, int a4, int a5) override {
D>    }
D>};
D>


Ну, навскидку, как-то так:

http://coliru.stacked-crooked.com/a/24a17eae8da7a765

template <typename, typename, typename> class Foo_;

template <typename Ret, typename Arg, size_t...I>
class Foo_<Ret, Arg, std::index_sequence<I...>> {
    template <size_t> using Param = Arg;
public:
    virtual ~Foo_() = default;
    virtual Ret bar(Param<I>...) = 0;
};

template <typename Ret, typename Arg, size_t N>
using Foo = Foo_<Ret, Arg, std::make_index_sequence<N>>;
--
Отредактировано 20.11.2019 19:52 rg45 . Предыдущая версия . Еще …
Отредактировано 20.11.2019 19:46 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.