Commit d490621d by Mark Mitchell Committed by Mark Mitchell

pt.c (process_template_parm): Ignore top-level qualifiers on non-type parameters.

	* pt.c (process_template_parm): Ignore top-level qualifiers on
	non-type parameters.
	* decl.c (start_function): Use current_function_parms in the call
	to require_complete_type_for_parms, not the probably empty
	DECL_ARGUMENTS.

From-SVN: r24684
parent 1e75bc34
1999-01-15 Mark Mitchell <mark@markmitchell.com>
* pt.c (process_template_parm): Ignore top-level qualifiers on
non-type parameters.
* decl.c (start_function): Use current_function_parms in the call
to require_complete_type_for_parms, not the probably empty
DECL_ARGUMENTS.
1999-01-14 Jason Merrill <jason@yorick.cygnus.com>
* semantics.c (finish_asm_stmt): Don't warn about redundant volatile.
......
......@@ -12860,8 +12860,8 @@ start_function (declspecs, declarator, attrs, pre_parsed_p)
if (! processing_template_decl)
{
/* In a fcn definition, arg types must be complete. */
require_complete_types_for_parms (DECL_ARGUMENTS (decl1));
/* In a function definition, arg types must be complete. */
require_complete_types_for_parms (current_function_parms);
if (TYPE_SIZE (complete_type (TREE_TYPE (fntype))) == NULL_TREE)
{
......
......@@ -1591,6 +1591,13 @@ process_template_parm (list, next)
/* is a const-param */
parm = grokdeclarator (TREE_VALUE (parm), TREE_PURPOSE (parm),
PARM, 0, NULL_TREE);
/* [temp.param]
The top-level cv-qualifiers on the template-parameter are
ignored when determining its type. */
TREE_TYPE (parm) = TYPE_MAIN_VARIANT (TREE_TYPE (parm));
/* A template parameter is not modifiable. */
TREE_READONLY (parm) = 1;
if (IS_AGGR_TYPE (TREE_TYPE (parm))
......
// Build don't link:
struct S;
void f(S s) {} // ERROR - incomplete type
// Build don't link:
// Origin: Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
double f(double);
typedef double (*M)(double);
class A {
public:
template <const M n> void g();
};
class B: public A {
public:
void g() { A::g<f>(); }
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment