Skip to content

Instantly share code, notes, and snippets.

@trentpolack
Last active November 11, 2017 07:55
Show Gist options
  • Save trentpolack/b61a8bae4a00eee2aaeaf861ab4aa109 to your computer and use it in GitHub Desktop.
Save trentpolack/b61a8bae4a00eee2aaeaf861ab4aa109 to your computer and use it in GitHub Desktop.
Construction/Allocation-Time std::shared_ptr Initialization (for the case where your class doesn't have constructors with an empty argument list)
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;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment