모든 생성자를 구성원 데이터 구조로 전달하는 좋은 방법입니까?구성원 개체에 전달자 생성
template<typename VectorData>
class VectorFunctionality
{
VectorData data;
public:
VectorFunctionality() = default;
VectorFunctionality(const VectorFunctionality&) = default;
template<typename ...Args>
VectorFunctionality(Args... args) : data(std::forward<Args>(args)...) {};
};
는 VectorData는 수 std 수 :: 배열 STD : 벡터 등 VectorFunctionality가 VectorData의 c'tors 모두를 상속한다. VectorFunctionality에 많은 c'tors를 작성하는 것을 피하기 위해 std :: array에 대해 다른 c'tors를 작성하고 std :: vector에 대해 다른 c'tors를 작성하는 것을 피하십시오.
컴파일러가 C++ 11의 생성자 상속을 지원한다면, 아마도'private' 상속을 사용하고, 생성자를 상속받습니다. 면책 조항 : 아직 시도하지 않았습니다. –
부주의하게 그렇게 쓰면,'std :: is_constructible
은'VectorFunctionality (Args && ... args)'를 사용하여 암시 적으로 인수를 전달합니다. 일반적인 경우에는 이것이 좋고 간단한 API를 제공하지 않는다고 생각합니다. –