re PR c++/52521 ([C++11] user defined literals and order of declaration)

PR c++/52521
	* parser.c (lookup_literal_operator): Return fn only if
	processed all arguments from args vector and argtypes is
	void_list_node.

	* g++.dg/cpp0x/udlit-args2.C: New test.

From-SVN: r185375
This commit is contained in:
Jakub Jelinek 2012-03-14 09:30:23 +01:00 committed by Jakub Jelinek
parent 036bd35e7a
commit 717a5c6206
4 changed files with 35 additions and 2 deletions

View file

@ -1,3 +1,10 @@
2012-03-14 Jakub Jelinek <jakub@redhat.com>
PR c++/52521
* parser.c (lookup_literal_operator): Return fn only if
processed all arguments from args vector and argtypes is
void_list_node.
2012-01-30 Dodji Seketeli <dodji@redhat.com>
PR c++/51641

View file

@ -1,6 +1,6 @@
/* C++ Parser.
Copyright (C) 2000, 2001, 2002, 2003, 2004,
2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
2005, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Written by Mark Mitchell <mark@codesourcery.com>.
This file is part of GCC.
@ -3581,7 +3581,13 @@ lookup_literal_operator (tree name, VEC(tree,gc) *args)
TREE_TYPE (tparm))))
found = false;
}
if (found)
if (found
&& ix == VEC_length (tree, args)
/* May be this should be sufficient_parms_p instead,
depending on how exactly should user-defined literals
work in presence of default arguments on the literal
operator parameters. */
&& argtypes == void_list_node)
return fn;
}
}

View file

@ -1,3 +1,8 @@
2012-03-14 Jakub Jelinek <jakub@redhat.com>
PR c++/52521
* g++.dg/cpp0x/udlit-args2.C: New test.
2012-03-13 Oleg Endo <olegendo@gcc.gnu.org>
PR target/48596

View file

@ -0,0 +1,15 @@
// PR c++/52521
// { dg-do compile }
// { dg-options -std=c++11 }
#include <cstddef>
int operator "" _a (const char *);
int operator "" _a (const char *, std::size_t);
int a = 123_a;
int a2 = "abc"_a;
int operator "" _b (const char *, std::size_t);
int operator "" _b (const char *);
int b = 123_b;
int b2 = "abc"_b;