mirror of
https://github.com/triqs/dft_tools
synced 2024-12-25 05:43:40 +01:00
shared_ptr<void> can not be constructed directly in c++14
- Fix for compilation on clang 3.4 in c++1y mode.
This commit is contained in:
parent
b644b38a6a
commit
9474937470
@ -459,7 +459,8 @@ namespace triqs { namespace clef {
|
||||
function():_fnt_ptr{std::make_shared<std_function_type> ()}{}
|
||||
|
||||
template <typename Expr, typename... X>
|
||||
explicit function(Expr const & _e, X... x) : _exp(new Expr(_e)),_fnt_ptr(new std_function_type(make_function(_e, x...))){}
|
||||
explicit function(Expr const& _e, X... x)
|
||||
: _exp(std::make_shared<Expr>(_e)), _fnt_ptr(new std_function_type(make_function(_e, x...))) {}
|
||||
|
||||
ReturnType operator()(T const &... t) const { return (*_fnt_ptr)(t...);}
|
||||
|
||||
@ -468,7 +469,7 @@ namespace triqs { namespace clef {
|
||||
|
||||
template<typename RHS> friend void triqs_clef_auto_assign (function const & x, RHS rhs) {
|
||||
* (x._fnt_ptr) = std_function_type (rhs);
|
||||
x._exp = std::shared_ptr <void> (new typename std::remove_cv<decltype(rhs.ex)>::type (rhs.ex));
|
||||
x._exp = std::make_shared<typename std::remove_cv<decltype(rhs.ex)>::type> (rhs.ex);
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -54,7 +54,7 @@ namespace triqs { namespace mc_tools {
|
||||
|
||||
template<typename MeasureType>
|
||||
void construct_delegation (MeasureType * p) {
|
||||
impl_= std::shared_ptr<void> (p);
|
||||
impl_= std::shared_ptr<MeasureType> (p);
|
||||
clone_ = [p]() { return MeasureType(*p);} ;
|
||||
hash_ = typeid(MeasureType).hash_code();
|
||||
type_name_ = typeid(MeasureType).name();
|
||||
|
@ -58,7 +58,7 @@ namespace triqs { namespace mc_tools {
|
||||
|
||||
template<typename MoveType>
|
||||
void construct_delegation (MoveType * p) {
|
||||
impl_= std::shared_ptr<void> (p);
|
||||
impl_= std::shared_ptr<MoveType> (p);
|
||||
hash_ = typeid(MoveType).hash_code();
|
||||
type_name_ = typeid(MoveType).name();
|
||||
clone_ = [p](){return MoveType(*p);};
|
||||
|
@ -101,7 +101,7 @@ namespace triqs { namespace utility {
|
||||
|
||||
private:
|
||||
template<typename T> void delegate_constructor( T * obj, std::string const & name) {
|
||||
p = std::shared_ptr<void> (obj);
|
||||
p = std::shared_ptr<T> (obj);
|
||||
type_code_ = type_code<T>();
|
||||
name_ = name;
|
||||
clone_ = [obj,name]() { return _object( *obj, name);} ;
|
||||
|
Loading…
Reference in New Issue
Block a user