Можно ли использовать пару в качестве аргумента для другой пары в C++.Можем ли мы отправить пару шаблона argumrent другой пары
Вот тестовая программа для этого.
#include <iostream>
#include <utility>
int main()
{
std::pair<int,int> m;
m=std::make_pair(1,3);
int r = 3;
int *q = &r;
int **p =&q;
int **t = p;
std::pair<int**,<std::pair<int,int> > > i(p,m);
std::cout<<i[t];
return 0;
}
Это ошибка, я получаю.
Test.cpp: In function ‘int main()’:
Test.cpp:12:45: error: template argument 2 is invalid
std::pair<int**,<std::pair<int,int>>> i(p,m);
^
Если я изменил формат декларации и написал программу следующим образом,
#include <iostream>
#include <utility>
int main()
{
std::pair<int,int> m;
m=std::make_pair(1,3);
int r = 3;
int *q = &r;
int **p =&q;
int **t = p;
std::pair<
int**,
<
std::pair<
int,
int
>
>
> i(p,m);
std::cout<<i[t];
return 0;
}
Существует дополнительная ошибка.
Test.cpp: In function ‘int main()’:
Test.cpp:20:7: error: template argument 2 is invalid
> i(p,m);
^
Test.cpp:20:14: error: expression list treated as compound expression in initializer [-fpermissive]
> i(p,m);
Какая проблема и как ее решить?
На стороне записки, я сделал программу и скомпилировал его в очень старой Dev-C++ компилятор на под управлением Windows 7 машин, которые использовали код, аналогичный приведенному выше, и он побежал прекрасно. Это была лабораторная программа в моем колледже, в которой был только тот компилятор.
Приведенный выше код, я побежал на оба окна 7 и Ubuntu 16.04 с использованием GNU г ++ 5.4.0
Ideone: Link to the actual program for reference
Вы также можете взглянуть на фактическую ошибку, я столкнулся в вышеуказанном ссылка.
После просмотра ответов, я вижу синтаксическая ошибка, которую я совершил. Я не помню, как я изменил код. Похоже, в связанном коде есть много других ошибок. –