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



Jonathan Wakely <redi at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|UNCONFIRMED                 |RESOLVED

         Resolution|                            |INVALID



--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-12-21 
19:42:45 UTC ---

(In reply to comment #2)

> I've always heard that the implementation order should not have an impact on

> the final result.

> 

> Am i rong again?



The problem isn't the order the function definitions (i.e. implementations)

appear in, it's the order they are declared in. A function that hasn't been

declared yet can't be called, that's pretty basic:



int f()

{

  return g(); // error

}



int g() { return 0; }



To make you code compile just declare the foo(const std::string&, Args...)

overload before any code needs to call it, so add its declaration before the

definition of foo(int, Args...)

Reply via email to