12 #ifndef CPROVER_CPP_CPP_TYPECHECK_RESOLVE_H 13 #define CPROVER_CPP_CPP_TYPECHECK_RESOLVE_H 32 bool fail_with_exception=
true);
54 resolve_identifierst &identifiers);
65 resolve_identifierst &identifiers,
69 resolve_identifierst &identifiers,
73 resolve_identifierst &identifiers,
82 resolve_identifierst &identifiers);
85 resolve_identifierst &identifiers,
95 resolve_identifierst &identifiers,
99 resolve_identifierst &identifiers);
102 resolve_identifierst &identifiers);
109 const typet &template_parameter,
110 const typet &desired_type);
113 const exprt &template_parameter,
114 const exprt &desired_expr);
118 unsigned &args_distance,
127 const resolve_identifierst &identifiers,
148 cost(_s_args.arguments().size()),
149 specialization_args(_s_args),
157 return cost<other.
cost;
162 #endif // CPROVER_CPP_CPP_TYPECHECK_RESOLVE_H exprt convert_template_parameter(const cpp_idt &id)
The type of an expression.
source_locationt source_location
C++ Language Type Checking.
std::set< cpp_idt * > id_sett
exprt resolve(const cpp_namet &cpp_name, const wantt want, const cpp_typecheck_fargst &fargs, bool fail_with_exception=true)
void guess_template_args(const typet &template_parameter, const typet &desired_type)
void remove_duplicates(resolve_identifierst &identifiers)
void disambiguate_functions(resolve_identifierst &identifiers, const cpp_typecheck_fargst &fargs)
void remove_templates(resolve_identifierst &identifiers)
exprt convert_identifier(const cpp_idt &id, const wantt want, const cpp_typecheck_fargst &fargs)
cpp_template_args_tct full_args
void exact_match_functions(resolve_identifierst &identifiers, const cpp_typecheck_fargst &fargs)
A reference into the symbol table.
void filter_for_namespaces(cpp_scopest::id_sett &id_set)
cpp_scopet * original_scope
symbol_typet disambiguate_template_classes(const irep_idt &base_name, const cpp_scopest::id_sett &id_set, const cpp_template_args_non_tct &template_args)
disambiguate partial specialization
void filter(resolve_identifierst &identifiers, const wantt want)
matcht(cpp_template_args_tct _s_args, cpp_template_args_tct _f_args, irep_idt _id)
C++ Language Type Checking.
exprt do_builtin(const irep_idt &base_name, const cpp_template_args_non_tct &template_args)
void guess_function_template_args(resolve_identifierst &identifiers, const cpp_typecheck_fargst &fargs)
guess arguments of function templates
void resolve_with_arguments(cpp_scopest::id_sett &id_set, const irep_idt &base_name, const cpp_typecheck_fargst &fargs)
void convert_identifiers(const cpp_scopest::id_sett &id_set, const wantt want, const cpp_typecheck_fargst &fargs, resolve_identifierst &identifiers)
C++ Language Type Checking.
cpp_template_args_tct specialization_args
Base class for all expressions.
bool operator<(const matcht &other) const
void show_identifiers(const irep_idt &base_name, const resolve_identifierst &identifiers, std::ostream &out)
cpp_typecheck_resolvet(class cpp_typecheckt &_cpp_typecheck)
std::vector< exprt > resolve_identifierst
void make_constructors(resolve_identifierst &identifiers)
void filter_for_named_scopes(cpp_scopest::id_sett &id_set)
void apply_template_args(resolve_identifierst &identifiers, const cpp_template_args_non_tct &template_args, const cpp_typecheck_fargst &fargs)
cpp_scopet & resolve_namespace(const cpp_namet &cpp_name)
cpp_typecheckt & cpp_typecheck
cpp_scopet & resolve_scope(const cpp_namet &cpp_name, irep_idt &base_name, cpp_template_args_non_tct &template_args)