[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-bugs
Subject:    [Bug c++/61022] New: [C++11] Bogus "error: parameter packs not expanded with '...'"
From:       "ppluzhnikov at google dot com" <gcc-bugzilla () gcc ! gnu ! org>
Date:       2014-04-30 22:15:46
Message-ID: bug-61022-4 () http ! gcc ! gnu ! org/bugzilla/
[Download RAW message or body]

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

            Bug ID: 61022
           Summary: [C++11] Bogus "error: parameter packs not expanded
                    with '...'"
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ppluzhnikov at google dot com

Google ref: b/14441040

// --- cut ---
template <typename T> struct Template {};

template <typename O> struct TemplateAliasStruct {
  template <typename T> using TemplateAlias = Template<T>;
};

template <template <typename> class... T> struct Templates {};

// Using this alternate definition of Templates compiles:
// template <template <typename> class... W> void Templates() {}

template <typename... W>
void DoTest() {
  Templates<TemplateAliasStruct<W>::template TemplateAlias...>();
}

int main(int argc, char* argv[]) {
  DoTest<int, int>();
  return 0;
}
// --- cut ---

Using trunk @r209848:

g++ -c -std=c++11 t.cc
t.cc: In function 'void DoTest()':
t.cc:14:65: error: parameter packs not expanded with '...':
   Templates<TemplateAliasStruct<W>::template TemplateAlias...>();
                                                                 ^
t.cc:14:65: note:         'W'

The test compiles cleanly with Clang.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic