<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
> C++ managed to make linkers the world over vastly more ocmplex.  It's <br>> the linker that discovers that some templates haven't been compiled yet <br>> and calls the compiler to compile them.  I really don't think linkers <br>> should be all *that* language-dependent.<br><br>This is actually unfortunately false.<br>C++ requires no or almost no linker support.<br>Inline functions often use linker features that C didn't need.<br>Templates do not.<br>What really happens is templatized code is fully in headers.<br>Which does have drawbacks -- large headers, slow compile.<br><br>There was an implementation where the compiler looked at the linker<br>errors. But I don't think any such implementation is in use today.<br><br><br>> Is finding the right template to instantiate with the right <br>> parameters always unambiguous?<br><br>When it is ambiguous, there is an error.<br><br>int i; long j;<br>max(i,j);<br>=> error<br><br>> That's the standard practice in C++.  To introduce complicated <br>> mechanisms tso that the programmer, with sufficient effort, can mimic <br>> features that should better have been reliably built into the language <br>> in the first place.<br><br>In the case of templates leading to some meta programming, it was an accident.<br>But in the case of operator overloading it seems just goodness.<br><br> - Jay<br><br>                                         </body>
</html>