{
enum tree_code ufcode = TREE_CODE (TREE_TYPE (from));
enum tree_code utcode = TREE_CODE (TREE_TYPE (to));
- tree nconv = NULL_TREE;
- if (comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (from)),
- TYPE_MAIN_VARIANT (TREE_TYPE (to)), 1))
- nconv = conv;
- else if (utcode == VOID_TYPE && ufcode != OFFSET_TYPE
- && ufcode != FUNCTION_TYPE)
+ if (utcode == VOID_TYPE && ufcode != OFFSET_TYPE
+ && ufcode != FUNCTION_TYPE)
{
from = build_pointer_type
(cp_build_type_variant (void_type_node,
TYPE_READONLY (TREE_TYPE (from)),
TYPE_VOLATILE (TREE_TYPE (from))));
- nconv = build_conv (PTR_CONV, from, conv);
+ conv = build_conv (PTR_CONV, from, conv);
}
else if (ufcode == OFFSET_TYPE && utcode == OFFSET_TYPE)
{
{
from = build_offset_type (tbase, TREE_TYPE (TREE_TYPE (from)));
from = build_pointer_type (from);
- nconv = build_conv (PMEM_CONV, from, conv);
+ conv = build_conv (PMEM_CONV, from, conv);
}
}
else if (IS_AGGR_TYPE (TREE_TYPE (from))
TYPE_READONLY (TREE_TYPE (from)),
TYPE_VOLATILE (TREE_TYPE (from)));
from = build_pointer_type (from);
- nconv = build_conv (PTR_CONV, from, conv);
+ conv = build_conv (PTR_CONV, from, conv);
}
}
- if (nconv && comptypes (from, to, 1))
- conv = nconv;
- else if (nconv && comp_ptr_ttypes (TREE_TYPE (to), TREE_TYPE (from)))
- conv = build_conv (QUAL_CONV, to, nconv);
+ if (comptypes (from, to, 1))
+ /* OK */;
+ else if (comp_ptr_ttypes (TREE_TYPE (to), TREE_TYPE (from)))
+ conv = build_conv (QUAL_CONV, to, conv);
else if (ptr_reasonably_similar (TREE_TYPE (to), TREE_TYPE (from)))
{
conv = build_conv (PTR_CONV, to, conv);
tmpl = DECL_TI_TEMPLATE (fn);
else if (TREE_CODE (fn) != TEMPLATE_DECL
|| (need_member_template && !is_member_template (fn)))
- {
- if (decls_match (decl, fn) && 0)
- {
- cp_error ("`template <>' applied to non-specialization `%D'",
- fn);
- return NULL_TREE;
- }
- continue;
- }
+ continue;
else
tmpl = fn;
{
no_match:
if (complain)
- cp_error ("`%D' does not match any template declaration", decl);
+ cp_error ("`%D' does not match any template declaration",
+ template_id);
return NULL_TREE;
}
ambiguous:
if (complain)
{
- cp_error ("ambiguous template specialization `%D'", decl);
+ cp_error ("ambiguous template specialization `%D'",
+ template_id);
print_candidates (templates);
}
return NULL_TREE;