On 06/24/2017 11:21 AM, Dmitri A. Sergatskov wrote:
On Sat, Jun 24, 2017 at 10:59 AM, John W. Eaton <address@hidden
<mailto:address@hidden>> wrote:
I admit this code is a bit tricky. I was trying to come up with a
way to use a single template that would cover both of these cases:
static octave_value
dump_container_map (const std::map<std::string,
std::list<std::string>>&)
static octave_value
dump_container_map (const std::map<std::string,
std::map<std::string>>&)
It works for me with gcc version 6.3.0 20170516 (Debian 6.3.0-18).
It is quite possible this is a bug in gcc7.1.1.
I filled a bug:
https://bugzilla.redhat.com/show_bug.cgi?id=1464612
would like to see what Jakub has to say about it.
Yes, that is quite possible, based upon the error message. The compiler
identifies the proper candidate, but it is telling us that the candidate
expects only one argument. I.e.,
../src/libinterp/corefcn/symtab.cc:1424:1: note: candidate:
template<class V, template<class ...> class C> octave_value
dump_container_map(const std::map<std::__cxx11::basic_string<char>, C<V>
&)
dump_container_map (const std::map<std::string, C<V>>& container_map)
^~~~~~~~~~~~~~~~~~
../src/libinterp/corefcn/symtab.cc:1424:1: note: template argument
deduction/substitution failed:
../src/libinterp/corefcn/symtab.cc:1446:73: note: candidate expects 1
argument, 3 provided
{"precedence_table", dump_container_map
(m_class_precedence_table)},
but I don't understand where the compiler is getting those number 3
from. Here's the definition of m_class_precedence_table: