You are viewing a single comment's thread from:

RE: Abit Witness Log 2016-10-22 ~ 2016-10-28

Hi @abit,
Since you are reviewing codes. Can you look at these errors?
When I am Compiling v0.14.3rc1 with VS2013.
I encounter two ambiguous call to overload function errors:

I believe the errors were introduced on issue #476.
https://github.com/steemit/steem/commit/3920af70cabb9f05b460b25a12a4191d35daddbc
The compiling log is long, this is partial log.
Thank You.

1). error C2668: 'fc::from_variant' : ambiguous call to overloaded function

          F:\Git_GUI\steem\libraries\fc\include\fc/reflect/variant.hpp(53): error C2668: 'fc::from_variant' : ambiguous call to overloaded function
          F:\Git_GUI\steem\libraries\chain\include\steemit/chain/protocol/operations.hpp(95): could be 'void fc::from_variant(const fc::variant &,steemit::chain::operation &)'
          F:\Git_GUI\steem\libraries\chain\include\steemit/chain/protocol/asset.hpp(123): or       'void fc::from_variant(const fc::variant &,steemit::chain::asset &)'
          F:\Git_GUI\steem\libraries\chain\include\steemit/chain/protocol/version.hpp(74): or       'void fc::from_variant(const fc::variant &,steemit::chain::hardfork_version &)'
          F:\Git_GUI\steem\libraries\chain\include\steemit/chain/protocol/version.hpp(71): or       'void fc::from_variant(const fc::variant &,steemit::chain::version &)'
          F:\Git_GUI\steem\libraries\chain\include\steemit/chain/protocol/types.hpp(269): or       'void fc::from_variant(const fc::variant &,steemit::chain::extended_private_key_type &)'
          F:\Git_GUI\steem\libraries\chain\include\steemit/chain/protocol/types.hpp(267): or       'void fc::from_variant(const fc::variant &,steemit::chain::extended_public_key_type &)'
          F:\Git_GUI\steem\libraries\chain\include\steemit/chain/protocol/types.hpp(265): or       'void fc::from_variant(const fc::variant &,steemit::chain::public_key_type &)'  

2). error C2668: 'fc::raw::unpack' : ambiguous call to overloaded function

F:\Git_GUI\steem\libraries\fc\include\fc/io/raw.hpp(292): error C2668: 'fc::raw::unpack' : ambiguous call to overloaded function
          F:\Git_GUI\steem\libraries\fc\include\fc/uint128.hpp(131): could be 'void fc::raw::unpack<fc::datastream<const char *>>(Stream &,fc::uint128 &)'
          with
          [
              Stream=fc::datastream<const char *>
          ]
          F:\Git_GUI\steem\libraries\fc\include\fc/io/raw.hpp(583): or       'void fc::raw::unpack<boost::container::flat_map<std::string,steemit::chain::weight_type,std::less<_Kty>,boost::container::new_allocator<std::pair<Key,T>>>>(const std::vector<char,std::allocator<char>> &,boost::container::flat_map<Key,T,std::less<_Kty>,boost::container::new_allocator<std::pair<Key,T>>> &)'
          with
          [
              _Kty=fc::string
  ,            Key=std::string
  ,            T=steemit::chain::weight_type
          ]
Sort:  

Sorry, the info doesn't help. Related code haven't changed for a while, so should be a deeper problem. I remember there was some template fitting issue, but forgot how to fix it. Perhaps I need to setup a VS environment..

//Edit: also I'm not very good at analysing the templates/macros used in the code: https://github.com/steemit/fc/compare/19d41b860676959e2014dd34700209df49eb62c4...a1354c5382ee16a7405a57ad688a891684d85b16#diff-18f79c66780a65dbb617edf936a5dd38R115

Thanks for the reply.
It is too difficult to debug these errors for me, especially when I am not a c++ coder.
I did manage to get rid of "fc::raw::unpack" error by removing the ... from flat_fwd.hpp's line 19 and 20, to make the template parameters explicit, I am not sure if it is a correct change though. Still trying to figure out the other error.

change from:

      template<typename Stream, typename K, typename... V>
      void unpack( Stream& s, flat_map<K,V...>& value ) ;

to:

      template<typename Stream, typename K, typename V> 
      void unpack( Stream& s, flat_map<K,V>& value ) ;

Thanks for the info. After this change, it would be unable to specify more than 2 parameters on flat_map: the comparison function, allocator and etc. If changed code compiles, it means we're not using such feature in the code right now, but I'm not sure whether we'll have this kind of code in the future.

That mean the changed is not correct.
I guess steemd can not be compiled with vs2013 from v0.14.3rc1 onward. :(
Thanks for your help.

Coin Marketplace

STEEM 0.16
TRX 0.15
JST 0.029
BTC 58139.39
ETH 2454.15
USDT 1.00
SBD 2.36