[Bug c++/20599] variadic template support
--- 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
--- 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
--- 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
--- 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=gcc&view=rev&rev=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 trunk/gcc/
[Bug c++/20599] variadic template support
--- 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=gcc&view=rev&rev=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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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