A function declared: "template<typename T> void operator<<(const T&)" when called with an l-value of type "invoke<flow>*" is invoked with T bound to "invoke<flow>" (missing the "*"), as shown by the diagnostic in the example attached. The diagnostic itself is not the problem, it just shows the incorrect binding; the function body was expecting the pointer and didn't get it. Code compiles fine if changed to expect a non-pointer and one is passed.
-- Summary: Mis-identifies template Product: gcc Version: 3.4.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: igodard at pacbell dot net CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21909