我正在尝试使用Solaris Studio 12.3在Solaris 10(Sparc)上从Microsoft Research编译SMT解算器Z3(版本4.5.0)(这是由于我无法更改的约束,所以请不要暗示GCC /克++)。
为了解决我现在反对的错误,我已经不得不做一些(或多或少的)微不足道的代码更改:
"../src/util/map.h", line 54: Error: Formal argument p of type const std::pair<expr*, int>& in call to pair_hash<obj_ptr_hash<expr>, int_hash>::operator()(const std::pair<expr*, int>&) const is being passed const std::pair<expr*, bool>.
"../src/util/hashtable.h", line 155: Where: While instantiating "table2map<default_map_entry<std::pair<expr*, bool>, bool>, pair_hash<obj_ptr_hash<expr>, int_hash>, default_eq<std::pair<expr*, bool>>>::entry_hash_proc::operator()(const _key_data<std::pair<expr*, bool>, bool>&) const".
"../src/util/hashtable.h", line 155: Where: Instantiated from core_hashtable<default_map_entry<std::pair<expr*, bool>, bool>, table2map<default_map_entry<std::pair<expr*, bool>, bool>, pair_hash<obj_ptr_hash<expr>, int_hash>, default_eq<std::pair<expr*, bool>>>::entry_hash_proc, table2map<default_map_entry<std::pair<expr*, bool>, bool>, pair_hash<obj_ptr_hash<expr>, int_hash>, default_eq<std::pair<expr*, bool>>>::entry_eq_proc>::get_hash(const _key_data<std::pair<expr*, bool>, bool>&) const.
"../src/util/hashtable.h", line 350: Where: Instantiated from non-template code.
1 Error(s) and 33 Warning(s) detected.
*** Error code 2
The following command caused the error:
CC -D_MP_INTERNAL -DNDEBUG -D_EXTERNAL_RELEASE -xldscope=hidden -c -xarch=sse2 -xvector=simd -D_NO_OMP_ -D _EXTERNAL_RELEASE -xO3 -xregs=frameptr -D_SUNOS_ -KPIC -xalias_level=any -features=zla -I../src/ast/rewriter/bit_blaster -I../src/ast/rewriter -I../src/ast -I../src/util -I../src/math/polynomial -I../src/math/automata -I../src/ast/simplifier -I../src/ast/macros -I../src/ast/normal_forms -I../src/cmd_context -I../src/solver -I../src/model -I../src/tactic -I../src/interp -I../src/smt/proto_model -I../src/smt/params -I../src/ast/pattern -I../src/parsers/smt2 -I../src/parsers/util -I../src/ast/substitution -I../src/math/grobner -I../src/math/euclid -I../src/math/simplex -I../src/ast/proof_checker -I../src/ast/fpa -osmt/smt_quick_checker.o ../src/smt/smt_quick_checker.cpp
make: Fatal error: Command failed for target `smt/smt_quick_checker.o'
bash-3.2$
可以在第54行找到导致错误的代码here。
我已经使用强制转换为std::pair<expr*, int>
,但由于此代码是使用不同类型的代码,因此导致与unsigned
类似的错误。
有人可以帮我解决这个错误吗?