LINUX.ORG.RU

История изменений

Исправление pavlick, (текущая версия) :

А как его можно вернуть? Какого действия ожидаешь при копировании?

S<10> s;
char ar[10];
ar = s;

У тебя под под ar кусок памяти на стеке, хочешь поэлементно копировать? А если там миллион элементов? std::array так и делает, в общем-то, можно его взять. Если очень хочется встроенный масив в функцию передать (сохранив размер), то пиши так:

#include <iostream>

template <int n>
struct S {
	void fn(char(&array)[n]) {
		for (char &i : array)
			i = 3;
	}
};
int main () {
	char ar[5] = {};
	S<5>().fn(ar);

	for (char &i : ar)
		std::cout << (int)i << '\n';
	return 0;
}

И копируй в массив как хочется.

Исправление pavlick, :

А как его можно вернуть? Какого действия ожидаешь при копировании?

S<10> s;
char ar[10];
ar = s;

У тебя под под ar кусок памяти на стеке, хочешь поэлементно копировать? А если там миллион элементов? Если очень хочется встроенный масив в функцию передать (сохранив размер), то пиши так:

#include <iostream>

template <int n>
struct S {
	void fn(char(&array)[n]) {
		for (char &i : array)
			i = 3;
	}
};
int main () {
	char ar[5] = {};
	S<5>().fn(ar);

	for (char &i : ar)
		std::cout << (int)i << '\n';
	return 0;
}

И копируй в массив как хочется.

Исходная версия pavlick, :

А как его можно вернуть? Какого действия ожидаешь при копировании?

S<10> s;
char ar[10];
ar = s;

У тебя под под ar кусок памяти на стеке, хочешь поэлементно копировать? А если там миллион элементов? Если очень хочется встроенный масив в функцию передать, то пиши так:

#include <iostream>

template <int n>
struct S {
	void fn(char(&array)[n]) {
		for (char &i : array)
			i = 3;
	}
};
int main () {
	char ar[5] = {};
	S<5>().fn(ar);

	for (char &i : ar)
		std::cout << (int)i << '\n';
	return 0;
}

И копируй в массив как хочется.