changeset 23686:93371ce5378d

fix variadic template declaration * symtab.cc (dump_container_map): Use correct variadic template declaration. Delete non-template std::list and std::set versions.
author John W. Eaton <jwe@octave.org>
date Sat, 24 Jun 2017 15:53:17 -0400
parents a94ed7424d63
children 315a3dcc229c
files libinterp/corefcn/symtab.cc
diffstat 1 files changed, 4 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/symtab.cc	Sat Jun 24 14:10:13 2017 -0400
+++ b/libinterp/corefcn/symtab.cc	Sat Jun 24 15:53:17 2017 -0400
@@ -1419,11 +1419,10 @@
   return fcn;
 }
 
-#if 0
-// This fails with GCC 7.
-template <typename V, template <typename...> class C>
+template <template <typename, typename...> class C, typename V,
+          typename... A>
 static octave_value
-dump_container_map_template (const std::map<std::string, C<V>>& container_map)
+dump_container_map (const std::map<std::string, C<V, A...>>& container_map)
 {
   if (container_map.empty ())
     return octave_value (Matrix ());
@@ -1433,49 +1432,12 @@
   for (const auto& nm_container : container_map)
     {
       std::string nm = nm_container.first;
-      const C<V>& container = nm_container.second;
+      const C<V, A...>& container = nm_container.second;
       info_map[nm] = Cell (container);
     }
 
   return octave_value (info_map);
 }
-#else
-static octave_value
-dump_container_map (const std::map<std::string, std::list<std::string>>& container_map)
-{
-  if (container_map.empty ())
-    return octave_value (Matrix ());
-
-  std::map<std::string, octave_value> info_map;
-
-  for (const auto& nm_container : container_map)
-    {
-      std::string nm = nm_container.first;
-      const std::list<std::string>& container = nm_container.second;
-      info_map[nm] = Cell (container);
-    }
-
-  return octave_value (info_map);
-}
-
-static octave_value
-dump_container_map (const std::map<std::string, std::set<std::string>>& container_map)
-{
-  if (container_map.empty ())
-    return octave_value (Matrix ());
-
-  std::map<std::string, octave_value> info_map;
-
-  for (const auto& nm_container : container_map)
-    {
-      std::string nm = nm_container.first;
-      const std::set<std::string>& container = nm_container.second;
-      info_map[nm] = Cell (container);
-    }
-
-  return octave_value (info_map);
-}
-#endif
 
 octave_value
 symbol_table::dump (void) const