템플릿 매개 변수 T가있는 클래스 템플릿 템플릿이 있고 Templ 클래스에는 obj라는 T 유형의 데이터 멤버가 있습니다. C++ 클래스 템플릿의 초기화 프로그램 목록 생성자를 제공합니다.
template <class T>
class Templ
{
public:
template <class... Args> explicit Templ (Args&&... args)
: obj (std::forward<Args>(args)...)
{
}
private:
T obj;
};
가 지금은 그 타입 T는 초기화 목록 생성자를 가진 클래스가 될 수 있습니다 실현, 그리고 나는 그것이 TEMPL를 통해 액세스 할 수 싶어 : 나는 OBJ의 생성자에 인수를 전달하는 가변 인자 생성자 템플릿을 썼다. 그래서
std::list::emplace
과
std::make_shared
을 확인했습니다. 그들은 광산처럼 가변적 인 기능을 가지고 있지만, init-list를 사용하는 오버라이드가 없습니다. 몇 가지 이유.
첫 번째 질문 : 왜? 어떤 클래스 T를 init-list ctor와 함께 사용하면 std::list<T>
을 사용하면 어떨까요? 왜 list :: emplace에는 initializer_list를 취하는 버전이 없습니까? 아마 내가해야 할 좋은 이유가있다. 그래서 나는 알고 싶다.
또한 STL의 기능과 관계없이 - init-list ctor를 좋은 디자인으로 제공해야합니까? 내 말은, 그것은 variadic ctor와 똑같지, 그렇지? 사용자가 템플릿 <>과 함께 사용할 모든 유형 또는 클래스 T를 선택하도록 허용하고 T에 정의 된 ctor를 직접 호출 할 수 있습니다. init-list를 사용하는 ctor 인 경우에도 마찬가지입니다.
첫 번째 질문은 좋은 질문이지만 다른 세 가지 질문은 실제로 별도의 게시물이어야합니다. –
@VaughnCato 나는 그 중 하나를 분리했다. 한 번에 20 분 안에 게시 할 수 있기 때문에 나머지는 고칠 수 없습니다. 다음 번에까지 – cfa45ca55111016ee9269f0a52e771
이제 단 하나의 질문입니다. – cfa45ca55111016ee9269f0a52e771