Исходное предупреждение в порядке, второе предупреждение также верно.
Это связано с тем, что массивы распадаются на указатели, поэтому var1
, первоначально массив целых чисел можно использовать в выражении, требующем указателя.
Если вы действительно хотите удалить их, есть несколько вариантов:
std::array<int, 10> var1;
test1(var1.data());
Из лучшего:
void test2(std::array<int, 10>& var);
void example2()
{
std::array<int, 10> var2;
test2(var2);
}
Тогда второй вариант фиксирует размер массива. Если он должен быть переменным, но фиксированным во время компиляции, используйте шаблон, в противном случае используйте std::vector
вместо массива в стиле C.