복사 생성자가 constexpr
인 클래스를 작성했습니다. (예를 들어, 구조체가 단순 해집니다.) 필드 중 하나가 배열입니다. 나는 그것을 또한 원해.constexpr 생성자의 배열 복사
struct Foo
{
static constexpr int SIZE = 4;
constexpr Foo() = default;
constexpr Foo(const Foo &foo) :
arr{foo.arr[0], foo.arr[1], foo.arr[2], foo.arr[3]},
bar(foo.bar+1) {}
int arr[SIZE] = {0, 0, 0, 0};
int bar = 0;
};
내 버전은 작동하지만 확장 가능하지 않습니다. SIZE
을 변경하면 생성자를 수정해야합니다. 또한 코드가보기 흉하게 보입니다.
생성자에서 배열을 복사하는 더 좋은 방법이 있습니까? 생성자는 constexpr
이어야합니다.
아무튼에게 기본 복사 생성자가 작업을 수행하지 않습니까? – juanchopanza
constexpr은 배열이 변이되지 않는다고 보장하지 않습니까? 포인터 만이 아니라 값으로 복사하는 것이 왜 효과가 있습니까? – tohava
@juanchopanza 솔직히 내 마음을 넘지 않았다. 그러나 문제는 질문입니다. 클래스에 복사를 위해 일부 계산이 필요한 일부 필드가 있다고 가정 할 수 있습니다. 게다가 그것은 미래에있을 가능성도 있습니다. –