class InitializerSharedPtr
{
protected:
	struct PrivateStruct
	{
		explicit PrivateStruct( int Irrelevant )
		{	}
	};

public:
	explicit InitializerSharedPtr( const PrivateStruct& )
	{	}

	InitializerSharedPtr( const PrivateStruct& DummyData, std::string DummyText, int DummyNumber )
	{	}

	template < typename... T >
	static std::shared_ptr< InitializerSharedPtr > CreatePtr( T&&...args )
	{
		return( std::make_shared< InitializerSharedPtr >( PrivateStruct { 0 }, std::forward< T >( args )... ) );
	}

	InitializerSharedPtr( const InitializerSharedPtr& ) = delete;
	const InitializerSharedPtr& operator =( const InitializerSharedPtr& ) = delete;
};