이 코드를 고려std :: variant에 각 구조체의 생성자를 명시 적으로 작성하지 않아도됩니까?
#include <variant>
struct x {
int y;
};
int main() {
std::variant<x> v(std::in_place_type<x>, {3}); /*1*/
return std::get<x>(v).y;
}
이 컴파일하지 않고도, 라인 /*1*/
에서 {}
을 제거 할 때 않는 경우에도 모두 "생성자 같은"형태의 집계 초기화
x a{3};
x b({3});
작품. 어떻게 든 내 이니셜 라이저가 내 실제 사례에서 사용될 수있는 각 구조체에 대한 지루한 보일러 플레이트 생성자를 작성하지 않고도 집계 초기화를 사용하여 구조체를 생성 할 수 있다는 것을 알고 있습니까?
내가 cppreference 당 두 개의 오버로드 (5), (6) 질문에 모두 말은
구축해, 지정된 대안 T와 와 변형이를 초기화로이, 어떻게 든 일을 기대 인수 에 포함 된 값 [...]
그 중요한 경우 내가 GCC 7을 사용하고 있습니다.
'std :: make_unique'와 패밀리가 같은 한계를 가지고 있다면 : ( – Rakete1111
집계 초기화는 항상 C++ 초기화 시스템의 가시가되었습니다. –