1#ifndef DUNE_FEM_COMMON_MEMORY_HH
2#define DUNE_FEM_COMMON_MEMORY_HH
7#include <dune/common/shared_ptr.hh>
18 template<
class T, std::enable_if_t< !std::is_base_of< std::enable_shared_from_this< std::decay_t< T > >, std::decay_t< T > >::value,
int > = 0 >
21 return std::shared_ptr< T >( &t, Dune::null_deleter< T >() );
24 template<
class T, std::enable_if_t< std::is_base_of< std::enable_shared_from_this< std::decay_t< T > >, std::decay_t< T > >::value,
int > = 0 >
31 if( t.weak_from_this().use_count() == 0 )
33 return std::shared_ptr< T >( &t, Dune::null_deleter< T >() );
39 return t.shared_from_this();
44 catch( std::bad_weak_ptr& )
46 return std::shared_ptr< T >( &t, Dune::null_deleter< T >() );
Definition: bindguard.hh:11
static std::shared_ptr< T > referenceToSharedPtr(T &t)
Definition: memory.hh:19