[Bug c++/20599] variadic template support

2007-03-28 Thread dgregor at gcc dot gnu dot org


--- Comment #16 from dgregor at gcc dot gnu dot org  2007-03-28 15:30 
---
This functionality is part of the experimental C++0x mode, and is under control
of the -std=gnu++0x flag in the mainline (4.3.0) compiler.


-- 

dgregor at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|SUSPENDED   |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.3.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2007-03-12 Thread pcarlini at suse dot de


--- Comment #15 from pcarlini at suse dot de  2007-03-12 09:26 ---
Actually in the latest mailing there are two new papers, N2151 and N2152.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2007-03-11 Thread fang at csl dot cornell dot edu


--- Comment #14 from fang at csl dot cornell dot edu  2007-03-12 06:22 
---
For reference, is this the latest draft of the variadic template proposal?  
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2080.pdf


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2007-03-09 Thread dgregor at gcc dot gnu dot org


--- Comment #12 from dgregor at gcc dot gnu dot org  2007-03-10 01:59 
---
Subject: Bug 20599

Author: dgregor
Date: Sat Mar 10 01:58:58 2007
New Revision: 122788

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=122788
Log:
2007-03-09  Douglas Gregor  [EMAIL PROTECTED]

PR c++/20599
* typeck.c (check_return_expr): Check for bare parameter packs.
(comptypes): Compare template parameter packs and
type pack expansions.
* decl.c (grokdeclarator): Deal with the declaration of function
parameter packs.
(grokparms): Verify that the (optional) function parameter pack is
at the end of the parameter list.
(xref_basetypes): Handle pack expansions in the base class.
(cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
* cp-tree.def (TYPE_ARGUMENT_PACK): New.
(NONTYPE_ARGUMENT_PACK): New.
(TYPE_PACK_EXPANSION): New.
(EXPR_PACK_EXPANSION): New.
(ARGUMENT_PACK_SELECT): New.
* cp-objcp-common.c (cp_tree_size): Compute size of
(NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
ARGUMENT_PACK_SELECT.
* error.c (dump_template_argument): Print template argument packs.
(dump_template_argument_list): Ditto.
(dump_template_parameter): Dump `...' for template type parameter
packs.
(dump_type): Dump TYPE_PACK_EXPANSION nodes.
(dump_parameters): Print function parameter packs.
(dump_template_parms): Print template argument packs.
(dump_expr): Dump EXPR_PACK_EXPANSION nodes.
(maybe_warn_variadic_templates): New.
* operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
* tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
CAST_EXPR. 
* mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
(write_template_arg): Write argument packs as separate arguments.
* cp-tree.h (struct template_parm_index_s): Add flag that
indicates that the template parameter is actually a parameter
pack.
(struct tree_argument_pack_select): New.
(enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
(union lang_tree_node): Add argument_pack_select.
(FUNCTION_PARAMETER_PACK_P): New.
(PACK_EXPANSION_P): New.
(PACK_EXPANSION_PATTERN): New.
(SET_PACK_EXPANSION_PATTERN): New.
(PACK_EXPANSION_PARAMETER_PACKS): New.
(ARGUMENT_PACK_P): New.
(ARGUMENT_PACK_ARGS): New.
(SET_ARGUMENT_PACK_ARGS): New.
(ARGUMENT_PACK_INCOMPLETE_P): New.
(ARGUMENT_PACK_EXPLICIT_ARGS): New.
(TEMPLATE_PARM_PARAMETER_PACK): New.
(TEMPLATE_TYPE_PARAMETER_PACK): New.
(ARGUMENT_PACK_SELECT_FROM_PACK): New.
(ARGUMENT_PACK_SELECT_INDEX): New.
(ARGUMENT_PACK_SELECT_ARG): New.
(struct cp_declarator): Add parameter_pack_p flag.
(maybe_warn_variadic_templates): Declare.
(process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
indicate a template parameter pack. 
(uses_parameter_packs): Declare.
(template_parameter_pack_p): Declare.
(template_parms_variadic_p): Declare.
(make_pack_expansion): Declare.
(check_for_bare_parameter_packs): Declare.
* cxx-pretty-print.c (pp_cxx_unary_expression): Print
sizeof... expressions. 
(pp_cxx_expression): Print pack expansions and non-type argument
packs.
(pp_cxx_exception_specification): Print pack expansions. 
(pp_cxx_direct_declarator): Print ellipsis for parameter packs.
(pp_cxx_ctor_initializer): Print pack expansions.
(pp_cxx_type_id): Print pack expansions.
(pp_cxx_template_argument_list): Print argument packs.
(pp_cxx_template_parameter): Print ellipsis for template parameter
packs.
* pt.c (comp_template_parms): Compare template parameter packs.
(template_parameter_pack_p): New.
(template_parms_variadic_p): New.
(template_args_variadic_p): New.
(make_ith_pack_parameter_name): New.
(struct find_parameter_pack_data): New.
(find_parameter_packs_r): New.
(uses_parameter_packs): New.
(make_pack_expansion): New.
(check_for_bare_parameter_packs): New.
(expand_template_argument_pack): New.
(reduce_template_parm_level): Propagate parameter pack flag.
(process_template_parm): Add is_parameter_pack parameter to state
when the parameter is actually a parameter pack. Create template
parameter packs when is_parameter_pack is true.
(current_template_args): The argument for a template parameter
pack is an argument pack containing a single pack expansion.
(process_partial_specialization): When checking that non-type
argument 

[Bug c++/20599] variadic template support

2007-03-09 Thread dgregor at gcc dot gnu dot org


--- Comment #13 from dgregor at gcc dot gnu dot org  2007-03-10 02:02 
---
Subject: Bug 20599

Author: dgregor
Date: Sat Mar 10 02:01:49 2007
New Revision: 122789

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=122789
Log:
2007-03-09  Douglas Gregor  [EMAIL PROTECTED]

PR c++/20599
* g++.dg/cpp0x/variadic-bind.C: New.
* g++.dg/cpp0x/variadic-function.C: New.
* g++.dg/cpp0x/variadic-mem_fn.C: New.
* g++.dg/cpp0x/variadic-tuple.C: New.
* g++.dg/cpp0x/variadic1.C: New.
* g++.dg/cpp0x/variadic2.C: New.
* g++.dg/cpp0x/variadic3.C: New.
* g++.dg/cpp0x/variadic4.C: New.
* g++.dg/cpp0x/variadic5.C: New.
* g++.dg/cpp0x/variadic6.C: New.
* g++.dg/cpp0x/variadic7.C: New.
* g++.dg/cpp0x/variadic8.C: New.
* g++.dg/cpp0x/variadic9.C: New.
* g++.dg/cpp0x/variadic10.C: New.
* g++.dg/cpp0x/variadic11.C: New.
* g++.dg/cpp0x/variadic12.C: New.
* g++.dg/cpp0x/variadic13.C: New.
* g++.dg/cpp0x/variadic14.C: New.
* g++.dg/cpp0x/variadic15.C: New.
* g++.dg/cpp0x/variadic16.C: New.
* g++.dg/cpp0x/variadic17.C: New.
* g++.dg/cpp0x/variadic18.C: New.
* g++.dg/cpp0x/variadic19.C: New.
* g++.dg/cpp0x/variadic20.C: New.
* g++.dg/cpp0x/variadic21.C: New.
* g++.dg/cpp0x/variadic22.C: New.
* g++.dg/cpp0x/variadic23.C: New.
* g++.dg/cpp0x/variadic24.C: New.
* g++.dg/cpp0x/variadic25.C: New.
* g++.dg/cpp0x/variadic26.C: New.
* g++.dg/cpp0x/variadic27.C: New.
* g++.dg/cpp0x/variadic28.C: New.
* g++.dg/cpp0x/variadic29.C: New.
* g++.dg/cpp0x/variadic30.C: New.
* g++.dg/cpp0x/variadic31.C: New.
* g++.dg/cpp0x/variadic32.C: New.
* g++.dg/cpp0x/variadic33.C: New.
* g++.dg/cpp0x/variadic34.C: New.
* g++.dg/cpp0x/variadic35.C: New.
* g++.dg/cpp0x/variadic36.C: New.
* g++.dg/cpp0x/variadic37.C: New.
* g++.dg/cpp0x/variadic38.C: New.
* g++.dg/cpp0x/variadic39.C: New.
* g++.dg/cpp0x/variadic40.C: New.
* g++.dg/cpp0x/variadic41.C: New.
* g++.dg/cpp0x/variadic42.C: New.
* g++.dg/cpp0x/variadic43.C: New.
* g++.dg/cpp0x/variadic44.C: New.
* g++.dg/cpp0x/variadic45.C: New.
* g++.dg/cpp0x/variadic46.C: New.
* g++.dg/cpp0x/variadic47.C: New.
* g++.dg/cpp0x/variadic48.C: New.
* g++.dg/cpp0x/variadic49.C: New.
* g++.dg/cpp0x/variadic50.C: New.
* g++.dg/cpp0x/variadic51.C: New.
* g++.dg/cpp0x/variadic52.C: New.
* g++.dg/cpp0x/variadic53.C: New.
* g++.dg/cpp0x/variadic54.C: New.
* g++.dg/cpp0x/variadic55.C: New.
* g++.dg/cpp0x/variadic56.C: New.
* g++.dg/cpp0x/variadic57.C: New.
* g++.dg/cpp0x/variadic58.C: New.
* g++.dg/cpp0x/variadic59.C: New.
* g++.dg/cpp0x/variadic60.C : New.
* g++.dg/cpp0x/variadic61.C : New.
* g++.dg/cpp0x/variadic62.C : New.
* g++.dg/cpp0x/variadic63.C : New.
* g++.dg/cpp0x/variadic64.C : New.
* g++.dg/cpp0x/variadic65.C : New.
* g++.dg/cpp0x/variadic66.C : New.
* g++.dg/cpp0x/variadic67.C : New.
* g++.dg/cpp0x/variadic68.C : New.  
* g++.dg/cpp0x/variadic69.C : New.
* g++.dg/cpp0x/variadic70.C : New.
* g++.dg/cpp0x/variadic71.C : New.
* g++.dg/cpp0x/variadic72.C : New.
* g++.dg/cpp0x/variadic73.C : New.
* g++.dg/cpp0x/variadic74.C : New.
* g++.dg/cpp0x/variadic75.C : New.
* g++.dg/cpp0x/variadic-ex1.C : New.
* g++.dg/cpp0x/variadic-ex2.C : New.
* g++.dg/cpp0x/variadic-ex3.C : New.
* g++.dg/cpp0x/variadic-ex4.C : New.
* g++.dg/cpp0x/variadic-ex5.C : New.
* g++.dg/cpp0x/variadic-ex6.C : New.
* g++.dg/cpp0x/variadic-ex7.C : New.
* g++.dg/cpp0x/variadic-ex8.C : New.
* g++.dg/cpp0x/variadic-ex9.C : New.
* g++.dg/cpp0x/variadic-ex10.C : New.
* g++.dg/cpp0x/variadic-ex11.C : New.
* g++.dg/cpp0x/variadic-ex12.C : New.
* g++.dg/cpp0x/variadic-ex13.C : New.
* g++.dg/cpp0x/variadic-ex14.C : New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex1.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex10.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex11.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex12.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex13.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex14.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex2.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex3.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex4.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex5.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex6.C
trunk/gcc/testsuite/g++.dg/cpp0x/variadic-ex7.C

[Bug c++/20599] variadic template support

2006-09-25 Thread pcarlini at suse dot de


--- Comment #11 from pcarlini at suse dot de  2006-09-25 13:00 ---
(In reply to comment #10)
  We should have -std=c++2003 and -std=c++0x.  However, care must be
  exercise about what is included in both options.
 
  -- Gaby
 
 So what will -ansi -pedantic-errors use?  c++98, 2003, or 0x?

I think we should simply learn from the C front-end, thus C89 vs C99, etc.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-24 Thread gdr at integrable-solutions dot net


--- Comment #9 from gdr at integrable-solutions dot net  2006-09-25 03:38 
---
Subject: Re:  variadic template support

pcarlini at suse dot de [EMAIL PROTECTED] writes:

| For the record, personally and for what is worth my personal opinion
| in the compiler area, I have nothing against adding to the compiler
| -std=c++0x 

We should have -std=c++2003 and -std=c++0x.  However, care must be
exercise about what is included in both options.

-- Gaby


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-24 Thread fang at csl dot cornell dot edu


--- Comment #10 from fang at csl dot cornell dot edu  2006-09-25 03:46 
---
Subject: Re:  variadic template support

 | For the record, personally and for what is worth my personal opinion
 | in the compiler area, I have nothing against adding to the compiler
 | -std=c++0x

 We should have -std=c++2003 and -std=c++0x.  However, care must be
 exercise about what is included in both options.

 -- Gaby

So what will -ansi -pedantic-errors use?  c++98, 2003, or 0x?

Fang


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-15 Thread rguenth at gcc dot gnu dot org


--- Comment #8 from rguenth at gcc dot gnu dot org  2006-09-15 08:39 ---
I second that.  In addition to that I would welcome a warning for current C++
if I use keywords that are reserved in C++0x.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-13 Thread bkoz at gcc dot gnu dot org


--- Comment #7 from bkoz at gcc dot gnu dot org  2006-09-13 06:19 ---

For the record, I'm strongly in favor of variadic templates. Key parts of TR1
(tuple, functional) necessitate some kind of compiler support in order to have
full implementations: the current limits on tuple size are an embarrasment. The
current implementation strategies for these library elements are highly complex
and far too pre-processor slap-happy for my comfort or taste.

As these parts of TR1 are already (as of Berlin) part of C++0X, I think it
behooves the C++ community to get real about robust solutions.

I think starting -std=c++0x is a great idea.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-12 Thread bkoz at gcc dot gnu dot org


--- Comment #2 from bkoz at gcc dot gnu dot org  2006-09-12 15:36 ---

See:
http://www.osl.iu.edu/~dgregor/cpp/variadic-templates.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-12 Thread pcarlini at suse dot de


--- Comment #3 from pcarlini at suse dot de  2006-09-12 15:50 ---
Then the real issue maybe is the following: what are we going to do vs C++0x
features? Shall we set-up the compiler switch for it (-std=c++0x?) and start
adding things? Or people believe it's too early? Maybe a good compromise would
be wait for inclusion in the draft, to wit before C++0x (but later than now for
variadic templates, for example)?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-12 Thread doug dot gregor at gmail dot com


--- Comment #4 from doug dot gregor at gmail dot com  2006-09-12 18:27 
---
It's a chicken-and-egg problem. Nobody on the committee wants to standardize
anything that isn't existing practice, but we only want to accept patches for
features that have been written into the current working draft. How will C++0x
ever move forward?

GCC is uniquely situated to lead the way to C++0x. Our support for C++03 is
excellent, and the code is open and (relatively) accessible to experimenters.
There are patches out there for rvalue references, decltype, variadic
templates, and concepts, among other things. If the patch is ready, and we
think the feature is worth pursuing, we should accept the patch. Our acceptance
allows greater experimentation with and understanding of new ideas within the
C++ community and how they interact, and will improve the C++0x language as a
whole. Of course, it also means that GCC will have one of the most mature
implementations of the upcoming C++0x features once C++0x is finally written in
stone.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-12 Thread pinskia at gcc dot gnu dot org


--- Comment #5 from pinskia at gcc dot gnu dot org  2006-09-12 18:29 ---
Suspending untill this is accepted.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |SUSPENDED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2006-09-12 Thread pcarlini at suse dot de


--- Comment #6 from pcarlini at suse dot de  2006-09-12 20:30 ---
For the record, personally and for what is worth my personal opinion in the
compiler area, I have nothing against adding to the compiler -std=c++0x and
start adding things, in general. I'm also finding a little adventurous adding
complex features which are not reasonably likely (not my call assessing that)
to be accepted for the next standard. If someone is interested in knowing my
opinion, I would certainly be in favor of rvalue references and concepts, a tad
less for variadic templates.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599



[Bug c++/20599] variadic template support

2005-03-23 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-23 
15:13 ---
Confirmed.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-03-23 15:13:36
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20599