Я следующий кодC++ make_pair нет функции соответствия не найдено
#include <utility>
using namespace std;
int a = ...//gets calculated somehow
int b = ...//same here
char container[a][b];
...
std::pair<int, char**> p = make_pair(1, container);
Последняя строка дает мне
main.cpp:10:58: error: no matching function for call to 'make_pair(int, char [a][b])'
std::pair<int, char**> p = make_pair(1, container);
^
main.cpp:10:58: note: candidate is:
In file included from /usr/local/include/c++/4.9.2/utility:70:0,
from main.cpp:1:
/usr/local/include/c++/4.9.2/bits/stl_pair.h:276:5: note: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
make_pair(_T1&& __x, _T2&& __y)
^
/usr/local/include/c++/4.9.2/bits/stl_pair.h:276:5: note: template argument deduction/substitution failed:
main.cpp:10:58: note: variable-sized array type 'char (&)[a][b]' is not a valid template argument
std::pair<int, char**> p = make_pair(1, container);
^
main.cpp:10:32: warning: unused variable 'p' [-Wunused-variable]
std::pair<int, char**> p = make_pair(1, container);
не должно быть 'std :: make_pair'? – Borgleader
Скажите это со мной: массив не является указателем. – aschepler
О, пожалуйста, не используйте VLA .. используйте вектор и прекратите использование смесей указателей/массивов, и у вас не будет проблем – stefan