Параметры шаблона шаблона в c ++.Используя экземпляр - PullRequest
0 голосов
/ 22 мая 2018

Я создаю экземпляр шаблона и хочу использовать этот экземпляр для другого шаблона

template <typename I> class A
{
  I name;
  public:
  A(I n){
    name = n;
  }

  void show() const
  {
   cout << name << "\t";
  }
};

template <template<typename I> class V> class B {
V origen;
public:
B (V o){
   origen = o;
}   

};

auto main() -> int
{
      cout << "[code.cpp]" << endl;

    A<int> a1(1);
    a1.show();
    B<A> b1(a1);
    return 0;
}

Что я вижу в этой теме, это то, что обычно не используют, но когда используют, не используют в этой форме, иЯ не понимаю почему.Я пытался использовать const.Не работает

1 Ответ

0 голосов
/ 22 мая 2018

V origen; и void B (V o) недопустимы, поскольку V не является типом.

Может быть, вы хотите

template <typename T> class B;

template <template<typename> class V, typename T>
class B<V<T>>
{
    V<T> origen;
public:
    B (V<T> o) : origen(o) {}
};

, а затем

A<int> a1(1);
B<A<int>> b1(a1);

Или может быть

template <template<typename> class V>
class B
{
    V<int> origen;
public:
    B (V<int> o) : origen(o) {}   
};

, а затем

A<int> a1(1);
B<A> b1(a1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...