X-FeedAbuse: http://nntpfeed.proxad.net/abuse.pl feeded by 88.191.16.109 Path: csiph.com!eeepc.pasdenom.info!news.pasdenom.info!news.dougwise.org!nntpfeed.proxad.net!nospam.fr.eu.org!usenet-fr.net!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Joshua Cranmer Newsgroups: comp.lang.java.programmer Subject: Re: Java vs C++ Date: Sun, 06 Feb 2011 12:57:46 -0500 Organization: A noiseless patient Spider Lines: 28 Message-ID: References: <4d4d585c$0$81476$e4fe514c@news.xs4all.nl> <4d4d60dc$0$23763$14726298@news.sunsite.dk> <4d4d8322$0$41117$e4fe514c@news.xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sun, 6 Feb 2011 17:57:48 +0000 (UTC) Injection-Info: mx01.eternal-september.org; posting-host="LtjcJP1H6uHOtkcPMh0bUA"; logging-data="13858"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/K6azSZF0ynX7Y74G5wvOyS7jgULd7Yp8=" User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12pre) Gecko/20101019 Lightning/1.0b3pre Thunderbird/3.1.6pre In-Reply-To: Cancel-Lock: sha1:p71fIvwf6TOxYRgTWmbv0PDG+Dw= Xref: csiph.com comp.lang.java.programmer:25838 On 02/06/2011 10:35 AM, Thomas Richter wrote: > Joshua Cranmer wrote: >> Templates in C++ are basically advanced macros--each invocation of a >> template type regenerates the class, so a Foo and a Foo >> are two completely different things. > > That's much more than a macro could do. Templates are a language of its > own, include syntax checks, etc. Quite unlike macros, they do not > substitute text patterns. Templates allow meta-programming, i.e. you can > use the compiler to generate code. And, of course, templates are quite > complex - very unlike the simple-minded preprocessor. It is the code generation that I'm referring to as "an advanced macro". It's a macro generator that understands types and is heavily integrated with the syntax of C++, but it is basically a way to automatically generate code. > I beg your pardon? C++ allows nested templates since C++99 and before. > The only issue here is a notational one, namely that you had to write > A > (note the space behind B) to avoid >> being parsed as a > token (shifting, namely). That is the only thing that got fixed in > C++0x, not nesting templates which is part of the language since C++99. I was specifically referring to the ability to use >> instead of > >. -- Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth