On 10/30/2011 01:13 PM, Ed Smith-Rowland wrote:
+ /* Look for a literal operator taking the exact type of numeric argument
+ as the literal value. */
Is this right? Do numeric literals only get here with type unsigned
long long or long double?
+ while (fns)
{
tree tmpl_args = make_char_string_pack (num_string);
- decl = lookup_template_function (decl, tmpl_args);
- result = finish_call_expr (decl, &args, false, true, tf_none);
- if (result != error_mark_node)
+ tree fn = OVL_CURRENT (fns);
+ tree argtypes = NULL_TREE;
+ if (TREE_CODE (TREE_TYPE (fn)) != LANG_TYPE)
+ argtypes = TYPE_ARG_TYPES (TREE_TYPE (fn));
+ if (argtypes != NULL_TREE
+ && same_type_p (TREE_VALUE (argtypes), void_type_node))
Let's wait to make the pack until we find a template. Also, you should
be able to just check for TEMPLATE_DECL since we won't accept a literal
operator template with different parameter types.
For string and character literals, we can still just build up a call; we
only need to walk the overload list here for numeric literals.
Jason