diff --git a/include/fc/rpc/api_connection.hpp b/include/fc/rpc/api_connection.hpp index 1345c45..f606d32 100644 --- a/include/fc/rpc/api_connection.hpp +++ b/include/fc/rpc/api_connection.hpp @@ -146,21 +146,27 @@ namespace fc { return f(); } - template - R call_generic( const std::function,Args...)>& f, variants::const_iterator a0, variants::const_iterator e, uint32_t max_depth ) + template::value,Signature>::type* = nullptr> + R call_generic( const std::function,Args...)>& f, + variants::const_iterator a0, variants::const_iterator e, uint32_t max_depth ) { FC_ASSERT( a0 != e, "too few arguments passed to method" ); FC_ASSERT( max_depth > 0, "Recursion depth exceeded!" ); detail::callback_functor arg0( get_connection(), a0->as(1) ); - return call_generic( this->bind_first_arg,Args...>( f, std::function(arg0) ), a0+1, e, max_depth - 1 ); + return call_generic( this->bind_first_arg,Args...>( f, + std::function(arg0) ), a0+1, e, max_depth - 1 ); } - template - R call_generic( const std::function&,Args...)>& f, variants::const_iterator a0, variants::const_iterator e, uint32_t max_depth ) + template::value,Signature>::type* = nullptr> + R call_generic( const std::function&,Args...)>& f, + variants::const_iterator a0, variants::const_iterator e, uint32_t max_depth ) { FC_ASSERT( a0 != e, "too few arguments passed to method" ); FC_ASSERT( max_depth > 0, "Recursion depth exceeded!" ); detail::callback_functor arg0( get_connection(), a0->as(1) ); - return call_generic( this->bind_first_arg&,Args...>( f, arg0 ), a0+1, e, max_depth - 1 ); + return call_generic( this->bind_first_arg&,Args...>( f, + arg0 ), a0+1, e, max_depth - 1 ); } template diff --git a/include/fc/static_variant.hpp b/include/fc/static_variant.hpp index 0fa2a7b..4a440a2 100644 --- a/include/fc/static_variant.hpp +++ b/include/fc/static_variant.hpp @@ -226,7 +226,7 @@ template static const fc::array init_wrappers( Visitor& v, Data d, typename Visitor::result_type(**funcs)(Visitor&,Data) = 0 ) { - fc::array result; + fc::array result{}; if( !funcs ) funcs = result.begin(); *funcs++ = [] ( Visitor& v, Data d ) { return v( *reinterpret_cast( d ) ); }; init_wrappers( v, d, funcs ); @@ -244,7 +244,7 @@ template static const fc::array init_const_wrappers( Visitor& v, Data d, typename Visitor::result_type(**funcs)(Visitor&,Data) = 0 ) { - fc::array result; + fc::array result{}; if( !funcs ) funcs = result.begin(); *funcs++ = [] ( Visitor& v, Data d ) { return v( *reinterpret_cast( d ) ); }; init_const_wrappers( v, d, funcs );