Gavin, thanks a lot for your reply, it makes a lot more sense now. Previously I read the "Concepts" stuff but it didn't sink in -- I wasn't sufficiently enlightened to understand the documentation, as they used to say in the old days. The stuff about template duck typing is mostly new to me in the C++ context -- I don't think I understood that stuff when I was working on C++ projects long ago -- but it makes sense to me now as an example of expression unification in a computer science-y sense; that's the mechanism for a lot of algebraic identities in a computer algebra project I'm participating in (namely Maxima). Incidentally a web search for C++ template duck typing brings up a lot of entertaining discussions, including complaints about the obscurity of compiler error messages -- I've bumped into that too. I'll digest this new stuff and try again soon. Thanks again for your help. Robert Dodier