<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for Sutter's Mill</title>
	<atom:link href="http://herbsutter.wordpress.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://herbsutter.wordpress.com</link>
	<description>Herb Sutter on software, hardware, and concurrency</description>
	<lastBuildDate>Sat, 14 Nov 2009 15:42:31 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Trip Report: October 2009 ISO C++ Standards Meeting by Martin</title>
		<link>http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1585</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Sat, 14 Nov 2009 15:42:31 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1585</guid>
		<description>I&#039;d heard a bit about mr Plauger stepping down.  Which is too bad, but... done.  After that, I had been worried what might become of the current standardization process, since wouldn&#039;t the stepping-down thing also mean that there would be another delay and I understood that the comittee had already missed one ISO deadline.  I&#039;d love to just be able to use things like the delegating constructors and Unicode string literals and long longs in my cross platform code today.  (Which is too idealistic, I&#039;m sure it&#039;ll take a few years for the Solaris and AIX compilers to catch up to the standard.)  So I&#039;ve begun to really dislike seeing any more apparent delays in the C++0X standardization process crop up.  But I&#039;m more optimistic now that with an experienced convener things will once again pick up and lead to a definite standard in the not too distant future.</description>
		<content:encoded><![CDATA[<p>I&#8217;d heard a bit about mr Plauger stepping down.  Which is too bad, but&#8230; done.  After that, I had been worried what might become of the current standardization process, since wouldn&#8217;t the stepping-down thing also mean that there would be another delay and I understood that the comittee had already missed one ISO deadline.  I&#8217;d love to just be able to use things like the delegating constructors and Unicode string literals and long longs in my cross platform code today.  (Which is too idealistic, I&#8217;m sure it&#8217;ll take a few years for the Solaris and AIX compilers to catch up to the standard.)  So I&#8217;ve begun to really dislike seeing any more apparent delays in the C++0X standardization process crop up.  But I&#8217;m more optimistic now that with an experienced convener things will once again pick up and lead to a definite standard in the not too distant future.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Brendan</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1580</link>
		<dc:creator>Brendan</dc:creator>
		<pubDate>Thu, 12 Nov 2009 18:45:13 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1580</guid>
		<description>@Nicol I don&#039;t mean to denigrate the work done on threading. In some sense I agree that it should be higher priority to get in the language standard, since threading needs compiler support, a memory model, etc, whereas you can get by with networking from a third party library like Berkeley sockets, or asio.

However, networking is still a ridiculous thing to be missing from a modern programming language. I wish they&#039;d just break this off into a separate committee, and get it done relatively quickly. No language changes are going to be needed.</description>
		<content:encoded><![CDATA[<p>@Nicol I don&#8217;t mean to denigrate the work done on threading. In some sense I agree that it should be higher priority to get in the language standard, since threading needs compiler support, a memory model, etc, whereas you can get by with networking from a third party library like Berkeley sockets, or asio.</p>
<p>However, networking is still a ridiculous thing to be missing from a modern programming language. I wish they&#8217;d just break this off into a separate committee, and get it done relatively quickly. No language changes are going to be needed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trip Report: October 2009 ISO C++ Standards Meeting by Michal Mocny</title>
		<link>http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1579</link>
		<dc:creator>Michal Mocny</dc:creator>
		<pubDate>Thu, 12 Nov 2009 16:21:52 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1579</guid>
		<description>std::async(..): fantastic.

Chance to have Herb Sutter back as chair: even better!

Thanks to P.J. Plauger for all his services.</description>
		<content:encoded><![CDATA[<p>std::async(..): fantastic.</p>
<p>Chance to have Herb Sutter back as chair: even better!</p>
<p>Thanks to P.J. Plauger for all his services.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trip Report: October 2009 ISO C++ Standards Meeting by Herb Sutter</title>
		<link>http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1578</link>
		<dc:creator>Herb Sutter</dc:creator>
		<pubDate>Thu, 12 Nov 2009 09:27:05 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1578</guid>
		<description>@Clare: Oops. Fixed.</description>
		<content:encoded><![CDATA[<p>@Clare: Oops. Fixed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trip Report: October 2009 ISO C++ Standards Meeting by tom</title>
		<link>http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1577</link>
		<dc:creator>tom</dc:creator>
		<pubDate>Thu, 12 Nov 2009 08:27:08 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1577</guid>
		<description>&quot; I will probably volunteer again to replace him.&quot;
Please do. I really hope someone as capable and experienced as you would take it up,  as there&#039;s seems so much anxious expectation on new C++(0x) features to be finalized and formally out in our hands.</description>
		<content:encoded><![CDATA[<p>&#8221; I will probably volunteer again to replace him.&#8221;<br />
Please do. I really hope someone as capable and experienced as you would take it up,  as there&#8217;s seems so much anxious expectation on new C++(0x) features to be finalized and formally out in our hands.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trip Report: October 2009 ISO C++ Standards Meeting by Clare Macrae</title>
		<link>http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1576</link>
		<dc:creator>Clare Macrae</dc:creator>
		<pubDate>Thu, 12 Nov 2009 07:37:32 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/11/11/trip-report-october-2008-iso-c-standards-meeting/#comment-1576</guid>
		<description>Would that title be &quot;October *2009*&quot;?...</description>
		<content:encoded><![CDATA[<p>Would that title be &#8220;October *2009*&#8221;?&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on September 2008 ISO C++ Standards Meeting: The Draft Has Landed, and a New Convener by Trip Report: October 2008 ISO C++ Standards Meeting &#171; Sutter&#8217;s Mill</title>
		<link>http://herbsutter.wordpress.com/2008/10/28/september-2008-iso-c-standards-meeting-the-draft-has-landed-and-a-new-convener/#comment-1575</link>
		<dc:creator>Trip Report: October 2008 ISO C++ Standards Meeting &#171; Sutter&#8217;s Mill</dc:creator>
		<pubDate>Thu, 12 Nov 2009 03:45:20 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2008/10/28/september-2008-iso-c-standards-meeting-the-draft-has-landed-and-a-new-convener/#comment-1575</guid>
		<description>[...] for two three-year terms from 2002 to 2008, I decided to let someone else have a go and so Plauger replaced me a year ago. He has done a really great job over the past year and his contributions in that role will be [...]</description>
		<content:encoded><![CDATA[<p>[...] for two three-year terms from 2002 to 2008, I decided to let someone else have a go and so Plauger replaced me a year ago. He has done a really great job over the past year and his contributions in that role will be [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Trip Report: October 2008 ISO C++ Standards Meeting &#171; Sutter&#8217;s Mill</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1574</link>
		<dc:creator>Trip Report: October 2008 ISO C++ Standards Meeting &#171; Sutter&#8217;s Mill</dc:creator>
		<pubDate>Thu, 12 Nov 2009 03:45:18 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1574</guid>
		<description>[...] the end of the meeting, we also discussed deprecating export (as I reported earlier) and exception specifications other than throw()-nothing. There seemed to be significant support [...]</description>
		<content:encoded><![CDATA[<p>[...] the end of the meeting, we also discussed deprecating export (as I reported earlier) and exception specifications other than throw()-nothing. There seemed to be significant support [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Concurrency Poll by Bill McGann</title>
		<link>http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1572</link>
		<dc:creator>Bill McGann</dc:creator>
		<pubDate>Wed, 11 Nov 2009 23:57:10 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1572</guid>
		<description>Advertised to the game crowd at:
http://www.gamedev.net/community/forums/topic.asp?topic_id=552990</description>
		<content:encoded><![CDATA[<p>Advertised to the game crowd at:<br />
<a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=552990" rel="nofollow">http://www.gamedev.net/community/forums/topic.asp?topic_id=552990</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Nicol Bolas</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1560</link>
		<dc:creator>Nicol Bolas</dc:creator>
		<pubDate>Wed, 04 Nov 2009 02:41:43 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1560</guid>
		<description>Sorry; I meant &quot;many-core&quot;. Chips with dozens of processors, ala Larrabee and GPUs.</description>
		<content:encoded><![CDATA[<p>Sorry; I meant &#8220;many-core&#8221;. Chips with dozens of processors, ala Larrabee and GPUs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Hoare on Testing by Antiguru</title>
		<link>http://herbsutter.wordpress.com/2009/10/26/hoare-on-testing/#comment-1559</link>
		<dc:creator>Antiguru</dc:creator>
		<pubDate>Sun, 01 Nov 2009 10:01:21 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/26/hoare-on-testing/#comment-1559</guid>
		<description>I couldn&#039;t disagree more about the &#039;weeding out&#039; aspect of the quote, it actually made me sad.

Algorithm correctness has nothing to do with implementation correctness, and making bugs does not mean incompetence, it&#039;s how well you respond to them that matters. C++ is just so complex that even if you virtually never make an error in logic or design judgement it&#039;s impossible to anticipate all the problems...or at least not the ones you haven&#039;t yet experienced, especially the ones that crop up every time you change your OS, compiler, or team.

I think the problem is people like to try to metaprogram too much. Not so much just with templates and complicated designs so much as programming themselves. Every fad seems to come and go and come again but it&#039;s always an issue of judgement not any algorithm you can follow to ensure you are the perfect coder or designer.</description>
		<content:encoded><![CDATA[<p>I couldn&#8217;t disagree more about the &#8216;weeding out&#8217; aspect of the quote, it actually made me sad.</p>
<p>Algorithm correctness has nothing to do with implementation correctness, and making bugs does not mean incompetence, it&#8217;s how well you respond to them that matters. C++ is just so complex that even if you virtually never make an error in logic or design judgement it&#8217;s impossible to anticipate all the problems&#8230;or at least not the ones you haven&#8217;t yet experienced, especially the ones that crop up every time you change your OS, compiler, or team.</p>
<p>I think the problem is people like to try to metaprogram too much. Not so much just with templates and complicated designs so much as programming themselves. Every fad seems to come and go and come again but it&#8217;s always an issue of judgement not any algorithm you can follow to ensure you are the perfect coder or designer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Free as in beer, books, and laptops by Austin</title>
		<link>http://herbsutter.wordpress.com/2006/12/29/free-as-in-beer-books-and-laptops/#comment-1558</link>
		<dc:creator>Austin</dc:creator>
		<pubDate>Sat, 31 Oct 2009 20:04:37 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2006/12/29/free-as-in-beer-books-and-laptops/#comment-1558</guid>
		<description>I think the more importent question is will the gift manipulate the bloggers opinion in a way that will benifet the gift giver, thus creating a bribe. I would have to say that if a company where to give me a laptop that did not work I would write about it, and if a company gave me a laptop that worked I would write about it. So really it depends on the person, and how honorable they are.</description>
		<content:encoded><![CDATA[<p>I think the more importent question is will the gift manipulate the bloggers opinion in a way that will benifet the gift giver, thus creating a bribe. I would have to say that if a company where to give me a laptop that did not work I would write about it, and if a company gave me a laptop that worked I would write about it. So really it depends on the person, and how honorable they are.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by David Heffernan</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1557</link>
		<dc:creator>David Heffernan</dc:creator>
		<pubDate>Fri, 30 Oct 2009 20:38:26 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1557</guid>
		<description>Multicore &quot;coming up&quot;.  Where the hell have you been these past few years.  Multicore is old news!</description>
		<content:encoded><![CDATA[<p>Multicore &#8220;coming up&#8221;.  Where the hell have you been these past few years.  Multicore is old news!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Nicol Bolas</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1556</link>
		<dc:creator>Nicol Bolas</dc:creator>
		<pubDate>Fri, 30 Oct 2009 20:06:14 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1556</guid>
		<description>On Export: Really, if Modules for C++ ever gets done, nobody will miss export (not that it was ever usable). Modules is export done *right*.

@peirz: True, Concepts isn&#039;t in C++0a because it needs polish. But one of the demonstrations of that need for polish was the GCC implementation. Another problem was that the GCC version stopped being developed, so new ideas for Concepts could not effectively be tested. That&#039;s why they need more time on it.

@Brendan: Networking is not a &quot;no brainer&quot; in terms of design. The need for one is important, but not nearly as important as a standard threading layer. Threads will be far more important in the coming years than having to manually abstract the differences between WinSock and the Linux and MacOS equivalents.

Not every application needs networking. Threading is something that, particularly with multicore coming up, virtually every application of any real size will use.</description>
		<content:encoded><![CDATA[<p>On Export: Really, if Modules for C++ ever gets done, nobody will miss export (not that it was ever usable). Modules is export done *right*.</p>
<p>@peirz: True, Concepts isn&#8217;t in C++0a because it needs polish. But one of the demonstrations of that need for polish was the GCC implementation. Another problem was that the GCC version stopped being developed, so new ideas for Concepts could not effectively be tested. That&#8217;s why they need more time on it.</p>
<p>@Brendan: Networking is not a &#8220;no brainer&#8221; in terms of design. The need for one is important, but not nearly as important as a standard threading layer. Threads will be far more important in the coming years than having to manually abstract the differences between WinSock and the Linux and MacOS equivalents.</p>
<p>Not every application needs networking. Threading is something that, particularly with multicore coming up, virtually every application of any real size will use.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Concurrency Poll by PDC 2009: What&#8217;s Happening at the Patterns Workshop &#124; #2782 - Thinking about agile (small 'a') software development, patterns and practices for building Microsoft .NET applications.</title>
		<link>http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1555</link>
		<dc:creator>PDC 2009: What&#8217;s Happening at the Patterns Workshop &#124; #2782 - Thinking about agile (small 'a') software development, patterns and practices for building Microsoft .NET applications.</dc:creator>
		<pubDate>Thu, 29 Oct 2009 17:50:31 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1555</guid>
		<description>[...] computing and what we can do to help. Herb Sutter—who’s speaking at the workshop—has a short poll on concurrency. If your attending the workshop you can also fill out the workshop [...]</description>
		<content:encoded><![CDATA[<p>[...] computing and what we can do to help. Herb Sutter—who’s speaking at the workshop—has a short poll on concurrency. If your attending the workshop you can also fill out the workshop [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Christoph</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1554</link>
		<dc:creator>Christoph</dc:creator>
		<pubDate>Tue, 27 Oct 2009 21:23:59 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1554</guid>
		<description>@Brendan
You are right. I&#039;m a bit surprised about the priorities of the standard committee.
Think about mathematical special functions in TR1. Who needs a &#039;confluent hypergeometric function&#039; or a &#039;cylindrical bessel functions of the second kind&#039;. Yes nobody, only a few mathematician who already implemented these functions for their special algorithms.
What about a socket or network abstraction library for C++? THIS is really IMPORTANT, not some fancy math functions.</description>
		<content:encoded><![CDATA[<p>@Brendan<br />
You are right. I&#8217;m a bit surprised about the priorities of the standard committee.<br />
Think about mathematical special functions in TR1. Who needs a &#8216;confluent hypergeometric function&#8217; or a &#8216;cylindrical bessel functions of the second kind&#8217;. Yes nobody, only a few mathematician who already implemented these functions for their special algorithms.<br />
What about a socket or network abstraction library for C++? THIS is really IMPORTANT, not some fancy math functions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Hoare on Testing by Dmitry Vyukov</title>
		<link>http://herbsutter.wordpress.com/2009/10/26/hoare-on-testing/#comment-1552</link>
		<dc:creator>Dmitry Vyukov</dc:creator>
		<pubDate>Tue, 27 Oct 2009 08:48:00 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/26/hoare-on-testing/#comment-1552</guid>
		<description>Ah, he is smart indeed. I&#039;ve named him as &quot;the greatest computer scientist&quot; in your poll :)</description>
		<content:encoded><![CDATA[<p>Ah, he is smart indeed. I&#8217;ve named him as &#8220;the greatest computer scientist&#8221; in your poll :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Brendan</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1551</link>
		<dc:creator>Brendan</dc:creator>
		<pubDate>Mon, 26 Oct 2009 17:49:02 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1551</guid>
		<description>I wish they&#039;d do something to change how the standardization process works... the slowness of the committee to make no brainer changes is ridiculous.

2009, and they aren&#039;t even *talking* about adding a standard networking library.</description>
		<content:encoded><![CDATA[<p>I wish they&#8217;d do something to change how the standardization process works&#8230; the slowness of the committee to make no brainer changes is ridiculous.</p>
<p>2009, and they aren&#8217;t even *talking* about adding a standard networking library.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Krzysiek</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1550</link>
		<dc:creator>Krzysiek</dc:creator>
		<pubDate>Mon, 26 Oct 2009 14:17:11 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1550</guid>
		<description>@Yuri
I also agree inline might be required. I mean placing such short function in header files which are included many times. Omiting &#039;inline&#039; keyword makes linker complaining about multiple definitions of such function.</description>
		<content:encoded><![CDATA[<p>@Yuri<br />
I also agree inline might be required. I mean placing such short function in header files which are included many times. Omiting &#8216;inline&#8217; keyword makes linker complaining about multiple definitions of such function.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Concurrency Poll by softtalkblog</title>
		<link>http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1549</link>
		<dc:creator>softtalkblog</dc:creator>
		<pubDate>Mon, 26 Oct 2009 11:07:35 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1549</guid>
		<description>This is a great idea. I&#039;ve posted about it on my blog and hope that this helps encourage participation (http://softtalkblog.wordpress.com/2009/10/26/take-the-concurrency-survey/) . I&#039;d be interested in seeing the results when the survey is complete.</description>
		<content:encoded><![CDATA[<p>This is a great idea. I&#8217;ve posted about it on my blog and hope that this helps encourage participation (<a href="http://softtalkblog.wordpress.com/2009/10/26/take-the-concurrency-survey/" rel="nofollow">http://softtalkblog.wordpress.com/2009/10/26/take-the-concurrency-survey/</a>) . I&#8217;d be interested in seeing the results when the survey is complete.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Concurrency Poll by Take the concurrency survey &#171; SoftTalk &#8211; multicore and parallel programming</title>
		<link>http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1548</link>
		<dc:creator>Take the concurrency survey &#171; SoftTalk &#8211; multicore and parallel programming</dc:creator>
		<pubDate>Mon, 26 Oct 2009 11:03:10 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1548</guid>
		<description>[...] Developing games for the next generation&#160;PC    Take the concurrency&#160;survey 26/10/2009   Herb Sutter has compiled a questionnaire to find out programmers&#8217; attitudes towards concurrency and the most common challenges they [...]</description>
		<content:encoded><![CDATA[<p>[...] Developing games for the next generation&nbsp;PC    Take the concurrency&nbsp;survey 26/10/2009   Herb Sutter has compiled a questionnaire to find out programmers&#8217; attitudes towards concurrency and the most common challenges they [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by peirz</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1545</link>
		<dc:creator>peirz</dc:creator>
		<pubDate>Sat, 24 Oct 2009 23:32:18 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1545</guid>
		<description>@Vat: yes, see the excellent discussion of export in the C++ Templates book by Vandevoorde, who&#039;s team of 3 actually implemented it.
@Neil: concepts are implemented in a custom version of gcc, immediately putting it in a different league than export. Most people also seem to agree that it would clean up the huge mess that has become type trait hacking; it&#039;s not in C++0a because it needs polish and that would stall the whole thing.
@Simon: the frontend does the heavy lifting and implements the language/parsing. The backend &quot;just&quot; generates assembly code from whatever intermediate language came out of the frontend.</description>
		<content:encoded><![CDATA[<p>@Vat: yes, see the excellent discussion of export in the C++ Templates book by Vandevoorde, who&#8217;s team of 3 actually implemented it.<br />
@Neil: concepts are implemented in a custom version of gcc, immediately putting it in a different league than export. Most people also seem to agree that it would clean up the huge mess that has become type trait hacking; it&#8217;s not in C++0a because it needs polish and that would stall the whole thing.<br />
@Simon: the frontend does the heavy lifting and implements the language/parsing. The backend &#8220;just&#8221; generates assembly code from whatever intermediate language came out of the frontend.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Neil Butterworth</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1544</link>
		<dc:creator>Neil Butterworth</dc:creator>
		<pubDate>Sat, 24 Oct 2009 18:09:21 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1544</guid>
		<description>That should of course be vector of bool - how does one do angle brackets here?</description>
		<content:encoded><![CDATA[<p>That should of course be vector of bool &#8211; how does one do angle brackets here?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Neil Butterworth</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1543</link>
		<dc:creator>Neil Butterworth</dc:creator>
		<pubDate>Sat, 24 Oct 2009 18:05:48 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1543</guid>
		<description>Isn&#039;t this just another example of a feature that should never have been in the standard in the first place? And of a feature that (not coincidentally) was designed by the standard comittee without  a working implementation. One thinks of other great successes such as vector  and concepts - isn&#039;t it about time that the standard comittee recognised that they should be very, very reluctant to do language design?</description>
		<content:encoded><![CDATA[<p>Isn&#8217;t this just another example of a feature that should never have been in the standard in the first place? And of a feature that (not coincidentally) was designed by the standard comittee without  a working implementation. One thinks of other great successes such as vector  and concepts &#8211; isn&#8217;t it about time that the standard comittee recognised that they should be very, very reluctant to do language design?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Vat Raghavan</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1542</link>
		<dc:creator>Vat Raghavan</dc:creator>
		<pubDate>Sat, 24 Oct 2009 13:46:48 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1542</guid>
		<description>To add to hoang&#039;s comment, after this was implemented by EDG, there was a two-part article in C++ Report( by Herb himself, i believe?) about they implementation process. Essentially, export doesn&#039;t work like the standard &amp; people expected it to, and it&#039;s not useful, even if it would have worked like we wanted, it wouldn&#039;t be useful :)</description>
		<content:encoded><![CDATA[<p>To add to hoang&#8217;s comment, after this was implemented by EDG, there was a two-part article in C++ Report( by Herb himself, i believe?) about they implementation process. Essentially, export doesn&#8217;t work like the standard &amp; people expected it to, and it&#8217;s not useful, even if it would have worked like we wanted, it wouldn&#8217;t be useful :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Simon Buchan</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1541</link>
		<dc:creator>Simon Buchan</dc:creator>
		<pubDate>Sat, 24 Oct 2009 12:44:04 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1541</guid>
		<description>@Hoang: What does that mean in the context of a full compiler? What would Comeau have to do (or have to have done) to implement export on their backend, since I imagine that would be the difficult part?</description>
		<content:encoded><![CDATA[<p>@Hoang: What does that mean in the context of a full compiler? What would Comeau have to do (or have to have done) to implement export on their backend, since I imagine that would be the difficult part?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Hoang Vu</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1540</link>
		<dc:creator>Hoang Vu</dc:creator>
		<pubDate>Sat, 24 Oct 2009 09:44:42 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1540</guid>
		<description>Export has been implemented by EDG which is the front end for Intel C++ and Comeau.</description>
		<content:encoded><![CDATA[<p>Export has been implemented by EDG which is the front end for Intel C++ and Comeau.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deprecating export considered for ISO C++0x by Eduardo Felipe</title>
		<link>http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1539</link>
		<dc:creator>Eduardo Felipe</dc:creator>
		<pubDate>Sat, 24 Oct 2009 01:46:19 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/23/deprecating-export-considered-for-iso-c0x/#comment-1539</guid>
		<description>Forgive me if I&#039;m being ignorant, but was this ever implemented by a compiler? I though export was just ignored by compilers in general...</description>
		<content:encoded><![CDATA[<p>Forgive me if I&#8217;m being ignorant, but was this ever implemented by a compiler? I though export was just ignored by compilers in general&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Concurrency Poll by Oleg</title>
		<link>http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1538</link>
		<dc:creator>Oleg</dc:creator>
		<pubDate>Fri, 23 Oct 2009 18:24:42 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1538</guid>
		<description>Hey Herb, I have gone through the survey and would love to  see your answers :)</description>
		<content:encoded><![CDATA[<p>Hey Herb, I have gone through the survey and would love to  see your answers :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on When is a zero-length array okay? by doug</title>
		<link>http://herbsutter.wordpress.com/2009/09/02/when-is-a-zero-length-array-okay/#comment-1537</link>
		<dc:creator>doug</dc:creator>
		<pubDate>Fri, 23 Oct 2009 14:04:36 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/09/02/when-is-a-zero-length-array-okay/#comment-1537</guid>
		<description>Why would the standard not allow zero length stack based arrays?  This completely breaks my design.

struct Validator {
  int location;
  char contents;
};

static const Validator VALID[] = 
{
  {0, {&#039;a&#039;, &#039;b&#039;, &#039;c&#039;}},
  {3, {&#039;d&#039;, &#039;e&#039;}},
  {6, {}},
  {7, {&#039;v&#039;, &#039;w&#039;, &#039;x&#039;, &#039;y&#039;, &#039;z&#039;}},
};

template inline size_t ARRAY_SIZE(const T (&amp;array)[N])
{
  return N;
}

int main(int, char**) {
  for (int i = 0; i &lt; ARRAY_SIZE(VALID); i++) 
  {
    cout &lt;&lt; &quot;The Contents at location &quot; &lt;&lt; VALID[i].location &lt;&lt; &quot; are:&quot;;
    for (int j = 0; j &lt; ARRAY_SIZE(VALID[i].contents; j++)
    {
      cout &lt;&lt; VALID[i].contents[j] &lt;&lt; &quot;, &quot;;
    }
    cout &lt;&lt; endl;
  }
}

There are good scenarios where you would want 0 length stack based arrays.</description>
		<content:encoded><![CDATA[<p>Why would the standard not allow zero length stack based arrays?  This completely breaks my design.</p>
<p>struct Validator {<br />
  int location;<br />
  char contents;<br />
};</p>
<p>static const Validator VALID[] =<br />
{<br />
  {0, {&#8216;a&#8217;, &#8216;b&#8217;, &#8216;c&#8217;}},<br />
  {3, {&#8216;d&#8217;, &#8216;e&#8217;}},<br />
  {6, {}},<br />
  {7, {&#8216;v&#8217;, &#8216;w&#8217;, &#8216;x&#8217;, &#8216;y&#8217;, &#8216;z&#8217;}},<br />
};</p>
<p>template inline size_t ARRAY_SIZE(const T (&amp;array)[N])<br />
{<br />
  return N;<br />
}</p>
<p>int main(int, char**) {<br />
  for (int i = 0; i &lt; ARRAY_SIZE(VALID); i++)<br />
  {<br />
    cout &lt;&lt; &quot;The Contents at location &quot; &lt;&lt; VALID[i].location &lt;&lt; &quot; are:&quot;;<br />
    for (int j = 0; j &lt; ARRAY_SIZE(VALID[i].contents; j++)<br />
    {<br />
      cout &lt;&lt; VALID[i].contents[j] &lt;&lt; &quot;, &quot;;<br />
    }<br />
    cout &lt;&lt; endl;<br />
  }<br />
}</p>
<p>There are good scenarios where you would want 0 length stack based arrays.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Concurrency Poll by Ade</title>
		<link>http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1535</link>
		<dc:creator>Ade</dc:creator>
		<pubDate>Thu, 22 Oct 2009 00:59:02 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/21/a-concurrency-poll/#comment-1535</guid>
		<description>I&#039;m not qualified to answer your survey (it&#039;s mostly over my head) but I&#039;d like to read the results anyway, mainly to help me choose a popular, good-at-concurrency programming language to learn some day.  Please add my email to your list.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not qualified to answer your survey (it&#8217;s mostly over my head) but I&#8217;d like to read the results anyway, mainly to help me choose a popular, good-at-concurrency programming language to learn some day.  Please add my email to your list.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trip Report: June 2008 ISO C++ Standards Meeting by Sullivan Web Development</title>
		<link>http://herbsutter.wordpress.com/2008/07/04/trip-report-june-2008-iso-c-standards-meeting/#comment-1534</link>
		<dc:creator>Sullivan Web Development</dc:creator>
		<pubDate>Wed, 21 Oct 2009 23:58:51 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2008/07/04/trip-report-june-2008-iso-c-standards-meeting/#comment-1534</guid>
		<description>Just starting to grasp C++, and I wish I was nearer to San Fran to check out the next meeting. Anyway, thanks for the info and links, I&#039;ll be sure to cruise your site to see what else I can pick up.

&lt;a href=&quot;http://www.sullivanwebdev.com&quot; rel=&quot;nofollow&quot;&gt;Sullivan Web Development&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Just starting to grasp C++, and I wish I was nearer to San Fran to check out the next meeting. Anyway, thanks for the info and links, I&#8217;ll be sure to cruise your site to see what else I can pick up.</p>
<p><a href="http://www.sullivanwebdev.com" rel="nofollow">Sullivan Web Development</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Yuri</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1533</link>
		<dc:creator>Yuri</dc:creator>
		<pubDate>Wed, 21 Oct 2009 08:44:29 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1533</guid>
		<description>@Herb: explicit inline is required for free functions at least for gcc-based compilers. I can be wrong, but standard says that only class members will be inlined if they defined in class declaration.
I saw disassembly of compiled code (with -O2) which generated empty function instantiations for template ones which were not declared as inline (they contained only prolog and epilog, but were exported to linker, and called by name from main code).</description>
		<content:encoded><![CDATA[<p>@Herb: explicit inline is required for free functions at least for gcc-based compilers. I can be wrong, but standard says that only class members will be inlined if they defined in class declaration.<br />
I saw disassembly of compiled code (with -O2) which generated empty function instantiations for template ones which were not declared as inline (they contained only prolog and epilog, but were exported to linker, and called by name from main code).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Questions About Exception Specifications by exception使用的時機 &#171; Jay</title>
		<link>http://herbsutter.wordpress.com/2007/01/24/questions-about-exception-specifications/#comment-1532</link>
		<dc:creator>exception使用的時機 &#171; Jay</dc:creator>
		<pubDate>Wed, 21 Oct 2009 08:05:45 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2007/01/24/questions-about-exception-specifications/#comment-1532</guid>
		<description>[...] Next: c++ checked exceptions (Exception specifications)? 根據[C++ coding Standards] 書中第 75 項 Avoid exception specifications ， 且在 A Pragmatic Look at Exception Specifications 中的建議 &#8220;Never write an exception specification.&#8221; 所以就不研究了，進階可看 Questions About Exception Specifications。 [...]</description>
		<content:encoded><![CDATA[<p>[...] Next: c++ checked exceptions (Exception specifications)? 根據[C++ coding Standards] 書中第 75 項 Avoid exception specifications ， 且在 A Pragmatic Look at Exception Specifications 中的建議 &#8220;Never write an exception specification.&#8221; 所以就不研究了，進階可看 Questions About Exception Specifications。 [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on 16 Important Technologies: Who demonstrated each one first? by jess</title>
		<link>http://herbsutter.wordpress.com/2009/01/05/16-important-technologies-who-demonstrated-each-one-first/#comment-1529</link>
		<dc:creator>jess</dc:creator>
		<pubDate>Tue, 20 Oct 2009 23:26:18 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/01/05/16-important-technologies-who-demonstrated-each-one-first/#comment-1529</guid>
		<description>The technological advancements  and innovations of today are spectacular, don&#039;t you agree?</description>
		<content:encoded><![CDATA[<p>The technological advancements  and innovations of today are spectacular, don&#8217;t you agree?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Herb Sutter</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1528</link>
		<dc:creator>Herb Sutter</dc:creator>
		<pubDate>Tue, 20 Oct 2009 16:43:59 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1528</guid>
		<description>@Dmitry,Kirill: Aha, you&#039;re right. The explicit const lets you also handle temporaries. I&#039;ll update the post to add the const.</description>
		<content:encoded><![CDATA[<p>@Dmitry,Kirill: Aha, you&#8217;re right. The explicit const lets you also handle temporaries. I&#8217;ll update the post to add the const.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Kirill</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1527</link>
		<dc:creator>Kirill</dc:creator>
		<pubDate>Tue, 20 Oct 2009 09:53:20 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1527</guid>
		<description>It is better to write ignore(const T&amp;). Dmitry Vyukov already written the sample where it will be necessary. Additionally it was discussed on stackoverflow (http://stackoverflow.com/questions/1565600/non-const-reference-to-temporary-object).</description>
		<content:encoded><![CDATA[<p>It is better to write ignore(const T&amp;). Dmitry Vyukov already written the sample where it will be necessary. Additionally it was discussed on stackoverflow (<a href="http://stackoverflow.com/questions/1565600/non-const-reference-to-temporary-object)" rel="nofollow">http://stackoverflow.com/questions/1565600/non-const-reference-to-temporary-object)</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Zura</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1526</link>
		<dc:creator>Zura</dc:creator>
		<pubDate>Tue, 20 Oct 2009 08:40:48 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1526</guid>
		<description>Yes, you&#039;re right. I should have wrote that 

#define UNUSED(x)

is ONLY usable for function formal parameters, and actually it is different &quot;thing&quot;, so UNUSED_PARAM would be better name...

As for omitting unused formal param names - sometimes it is good to leave variable name, for the sake of description, etc..

Thanks.</description>
		<content:encoded><![CDATA[<p>Yes, you&#8217;re right. I should have wrote that </p>
<p>#define UNUSED(x)</p>
<p>is ONLY usable for function formal parameters, and actually it is different &#8220;thing&#8221;, so UNUSED_PARAM would be better name&#8230;</p>
<p>As for omitting unused formal param names &#8211; sometimes it is good to leave variable name, for the sake of description, etc..</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Dmitry Vyukov</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1525</link>
		<dc:creator>Dmitry Vyukov</dc:creator>
		<pubDate>Tue, 20 Oct 2009 06:41:48 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1525</guid>
		<description>Re: To those who mentioned using this for suppressing warnings on unused function formal parameters, you don’t actually need it for that — just do the same thing ignore() itself does, namely don’t give the parameter a name.

I think it&#039;s a matter of personal taste or coding style. However, I prefer to not delete parameter names. When you read code with deleted parameter names, you basically have no idea as to WHAT that parameter actually means, thus you have no idea as to WHY it is unused. Maybe it&#039;s ultimately uninteresting for the function, or it&#039;s just not yet supported but must be supported. Moreover, if need that parameter back, you will have to find the name somewhere and retype it.
Sometimes I just comment unused parameters out:

void foo(...., int /*some_flag*/, ...) {...}

However that badly cooperates with other multi-line comments - there is no nested multi-line comments.

So I prefer to explicitly mark it as unused, it also provides a good place for comment regarding a reason why it is unused. For example:

inline int rl_WaitForSingleObjectEx(rl_HANDLE obj, unsigned long timeout, int alertable, debug_info_param info)
{
    (void)alertable; //not yet supported - support it!
    ...
}</description>
		<content:encoded><![CDATA[<p>Re: To those who mentioned using this for suppressing warnings on unused function formal parameters, you don’t actually need it for that — just do the same thing ignore() itself does, namely don’t give the parameter a name.</p>
<p>I think it&#8217;s a matter of personal taste or coding style. However, I prefer to not delete parameter names. When you read code with deleted parameter names, you basically have no idea as to WHAT that parameter actually means, thus you have no idea as to WHY it is unused. Maybe it&#8217;s ultimately uninteresting for the function, or it&#8217;s just not yet supported but must be supported. Moreover, if need that parameter back, you will have to find the name somewhere and retype it.<br />
Sometimes I just comment unused parameters out:</p>
<p>void foo(&#8230;., int /*some_flag*/, &#8230;) {&#8230;}</p>
<p>However that badly cooperates with other multi-line comments &#8211; there is no nested multi-line comments.</p>
<p>So I prefer to explicitly mark it as unused, it also provides a good place for comment regarding a reason why it is unused. For example:</p>
<p>inline int rl_WaitForSingleObjectEx(rl_HANDLE obj, unsigned long timeout, int alertable, debug_info_param info)<br />
{<br />
    (void)alertable; //not yet supported &#8211; support it!<br />
    &#8230;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Dmitry Vyukov</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1524</link>
		<dc:creator>Dmitry Vyukov</dc:creator>
		<pubDate>Tue, 20 Oct 2009 06:31:06 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1524</guid>
		<description>@Herb: Your version does not work correctly on the code I gave. Try to compile:

template
void unused(T&amp;) {}

std::string foo() { return std::string(); }
int bar() { return 0; }

int main()
{
    unused(foo());
    unused(bar());
}</description>
		<content:encoded><![CDATA[<p>@Herb: Your version does not work correctly on the code I gave. Try to compile:</p>
<p>template<br />
void unused(T&amp;) {}</p>
<p>std::string foo() { return std::string(); }<br />
int bar() { return 0; }</p>
<p>int main()<br />
{<br />
    unused(foo());<br />
    unused(bar());<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Herb Sutter</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1523</link>
		<dc:creator>Herb Sutter</dc:creator>
		<pubDate>Mon, 19 Oct 2009 23:53:37 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1523</guid>
		<description>A colleague emailed me privately asking:

&lt;blockquote&gt;
Why not use
&lt;code&gt;sizeof pb;&lt;/code&gt;
Is there a compiler on which this doesn&#039;t quiet the warning?
&lt;/blockquote&gt;

Before trying it, my guess/expectation is that it would get the same result as just mentioning the variable name (e.g., &quot;pb;&quot;, see earlier comments), because it falls into the same category of using the name in an expression that has no effect. Therefore, whether or not it quiets the original &quot;unused variable&quot; warning, it is likely to generate a new warning saying that the expression has no effect or its result was unused.

Then I tried it, and the result... drum roll please... was: It doesn&#039;t suppress the warning on Borland, and just changes it to &quot;expression has no effect&quot; on EDG. Not exactly the same effect on every compiler as just writing a statement containing only the variable name, but it&#039;s close.

So the solution I posted (and Boost&#039;s identical facility) is still the only technique that works on all the compilers I tried. Any more suggestions of variants to try?</description>
		<content:encoded><![CDATA[<p>A colleague emailed me privately asking:</p>
<blockquote><p>
Why not use<br />
<code>sizeof pb;</code><br />
Is there a compiler on which this doesn&#8217;t quiet the warning?
</p></blockquote>
<p>Before trying it, my guess/expectation is that it would get the same result as just mentioning the variable name (e.g., &#8220;pb;&#8221;, see earlier comments), because it falls into the same category of using the name in an expression that has no effect. Therefore, whether or not it quiets the original &#8220;unused variable&#8221; warning, it is likely to generate a new warning saying that the expression has no effect or its result was unused.</p>
<p>Then I tried it, and the result&#8230; drum roll please&#8230; was: It doesn&#8217;t suppress the warning on Borland, and just changes it to &#8220;expression has no effect&#8221; on EDG. Not exactly the same effect on every compiler as just writing a statement containing only the variable name, but it&#8217;s close.</p>
<p>So the solution I posted (and Boost&#8217;s identical facility) is still the only technique that works on all the compilers I tried. Any more suggestions of variants to try?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Herb Sutter</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1522</link>
		<dc:creator>Herb Sutter</dc:creator>
		<pubDate>Mon, 19 Oct 2009 23:50:08 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1522</guid>
		<description>@Glen: No, Microsoft didn&#039;t say we&#039;d refuse to implement them, that was a mistake in the minutes that we didn&#039;t see to ask to be corrected. I and others have been saying for two years now that trying to standardize attributes is a bad idea and fraught with peril, and I&#039;ve still been actively saying so on the committee reflectors over the past two months.</description>
		<content:encoded><![CDATA[<p>@Glen: No, Microsoft didn&#8217;t say we&#8217;d refuse to implement them, that was a mistake in the minutes that we didn&#8217;t see to ask to be corrected. I and others have been saying for two years now that trying to standardize attributes is a bad idea and fraught with peril, and I&#8217;ve still been actively saying so on the committee reflectors over the past two months.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Glen</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1521</link>
		<dc:creator>Glen</dc:creator>
		<pubDate>Mon, 19 Oct 2009 21:24:49 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1521</guid>
		<description>grumps corner: can&#039;t we squeeze this into the c++0x proposal (the one with the other attribute stuff) so we can have a standard compiler switch/attribute for this stuff? ;)

Maybe these are two I would actually vote for:

int a [[unused]];
int f( int a [[unused]] );

more &quot;creatively&quot;:

// Maybe this could cause all calls/side effects to trace (in the following line) to
be ignored but allowing the calls to be left left
in the code when [[unused]] can be removed if required later.

void trace [[unused]] ( int x, int y);

// Maybe this to strip out calls to and creates of trace_logger.
class trace_logger [[unused]] { }

// Getting silly but couldn&#039;t a [[used]] be, er, used too?

// Construction wanted, but no further
// use required so compiler don&#039;t complain
// about unused. At least I think this error sometimes happened back when i Used to use C++ (ho ho).

Object y[[used]](); // Prevent unused error.

// How about?
void used_this [[deprecated(&quot;we used to use this but now we use_that instead&quot;)]]( int x, y);

I&#039;ve asked this before but I hear MS aren&#039;t implementing c++0x attributes? Is this true? That might be no bad thing thing because they are so overused in .NET (and just see the sillyness above!) but then C++/CLI has single bracket attributes that though I like better will just make for non standard overuse... what was the committee view in not voting for the C++/CLI type attribute?

Others having &quot;fun&quot; with attributes I see:
 http://stackoverflow.com/questions/296838/c0x-attributes-youd-like-to-see

(interesting comments too about a plan for a world with no macros and the &quot;travesty&quot; of MS not doing them? I&#039;m not sure it&#039;s a travesty but I would like to know the reasoning or if true or not.</description>
		<content:encoded><![CDATA[<p>grumps corner: can&#8217;t we squeeze this into the c++0x proposal (the one with the other attribute stuff) so we can have a standard compiler switch/attribute for this stuff? ;)</p>
<p>Maybe these are two I would actually vote for:</p>
<p>int a [[unused]];<br />
int f( int a [[unused]] );</p>
<p>more &#8220;creatively&#8221;:</p>
<p>// Maybe this could cause all calls/side effects to trace (in the following line) to<br />
be ignored but allowing the calls to be left left<br />
in the code when [[unused]] can be removed if required later.</p>
<p>void trace [[unused]] ( int x, int y);</p>
<p>// Maybe this to strip out calls to and creates of trace_logger.<br />
class trace_logger [[unused]] { }</p>
<p>// Getting silly but couldn&#8217;t a [[used]] be, er, used too?</p>
<p>// Construction wanted, but no further<br />
// use required so compiler don&#8217;t complain<br />
// about unused. At least I think this error sometimes happened back when i Used to use C++ (ho ho).</p>
<p>Object y[[used]](); // Prevent unused error.</p>
<p>// How about?<br />
void used_this [[deprecated("we used to use this but now we use_that instead")]]( int x, y);</p>
<p>I&#8217;ve asked this before but I hear MS aren&#8217;t implementing c++0x attributes? Is this true? That might be no bad thing thing because they are so overused in .NET (and just see the sillyness above!) but then C++/CLI has single bracket attributes that though I like better will just make for non standard overuse&#8230; what was the committee view in not voting for the C++/CLI type attribute?</p>
<p>Others having &#8220;fun&#8221; with attributes I see:<br />
 <a href="http://stackoverflow.com/questions/296838/c0x-attributes-youd-like-to-see" rel="nofollow">http://stackoverflow.com/questions/296838/c0x-attributes-youd-like-to-see</a></p>
<p>(interesting comments too about a plan for a world with no macros and the &#8220;travesty&#8221; of MS not doing them? I&#8217;m not sure it&#8217;s a travesty but I would like to know the reasoning or if true or not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Herb Sutter</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1520</link>
		<dc:creator>Herb Sutter</dc:creator>
		<pubDate>Mon, 19 Oct 2009 20:44:04 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1520</guid>
		<description>P.S.: To those who mentioned using this for suppressing warnings on unused function formal parameters, you don&#039;t actually need it for that -- just do the same thing ignore() itself does, namely don&#039;t give the parameter a name.</description>
		<content:encoded><![CDATA[<p>P.S.: To those who mentioned using this for suppressing warnings on unused function formal parameters, you don&#8217;t actually need it for that &#8212; just do the same thing ignore() itself does, namely don&#8217;t give the parameter a name.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Herb Sutter</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1519</link>
		<dc:creator>Herb Sutter</dc:creator>
		<pubDate>Mon, 19 Oct 2009 20:39:57 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1519</guid>
		<description>@Zura: I considered an UNUSED macro too, but there are several problems with that:

1. It doesn&#039;t work, because the macro expands to nothing during preprocessing before language rules begin. So writing UNUSED(x) is the same as writing nothing, and you end up with the warning.

2. It doesn&#039;t handle the case when you want an expression with side effects, such as:

&lt;pre&gt;
  ignore( SomeFunctionWithAResult() );
&lt;/pre&gt;

and you really want the contents of the ignore() to execute normally, not be discarded.

By the way, here&#039;s one option I didn&#039;t present, since this wasn&#039;t intended to be a full article, but here goes: You could simply mention the variable again, such as:

&lt;pre&gt;
  static void Constraints(D* p)
  {
     B* pb = p;
     pb; // mention the variable again
  }
&lt;/pre&gt;

Unfortunately, this also doesn&#039;t do the trick because it does suppress the original warning on both compilers I tried (good) but creates a new warning on an overlapping set of compilers: Expression has no effect. In my test suite, we went from Borland and EDG reporting the original warning to EDG and Digital Mars now reporting a different warning. No win.

So the original method I presented is still the only portable way that&#039;s been suggested so far, and it&#039;s basically identical to Boost&#039;s (Boost&#039;s just spells out the mostly-redundant &quot;inline&quot; and &quot;const&quot;; see earlier comment above).</description>
		<content:encoded><![CDATA[<p>@Zura: I considered an UNUSED macro too, but there are several problems with that:</p>
<p>1. It doesn&#8217;t work, because the macro expands to nothing during preprocessing before language rules begin. So writing UNUSED(x) is the same as writing nothing, and you end up with the warning.</p>
<p>2. It doesn&#8217;t handle the case when you want an expression with side effects, such as:</p>
<pre>
  ignore( SomeFunctionWithAResult() );
</pre>
<p>and you really want the contents of the ignore() to execute normally, not be discarded.</p>
<p>By the way, here&#8217;s one option I didn&#8217;t present, since this wasn&#8217;t intended to be a full article, but here goes: You could simply mention the variable again, such as:</p>
<pre>
  static void Constraints(D* p)
  {
     B* pb = p;
     pb; // mention the variable again
  }
</pre>
<p>Unfortunately, this also doesn&#8217;t do the trick because it does suppress the original warning on both compilers I tried (good) but creates a new warning on an overlapping set of compilers: Expression has no effect. In my test suite, we went from Borland and EDG reporting the original warning to EDG and Digital Mars now reporting a different warning. No win.</p>
<p>So the original method I presented is still the only portable way that&#8217;s been suggested so far, and it&#8217;s basically identical to Boost&#8217;s (Boost&#8217;s just spells out the mostly-redundant &#8220;inline&#8221; and &#8220;const&#8221;; see earlier comment above).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Zura</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1518</link>
		<dc:creator>Zura</dc:creator>
		<pubDate>Mon, 19 Oct 2009 18:11:08 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1518</guid>
		<description>... Although in original example  (Constraints), it won&#039;t do anything.
But still, would be good if this will be listed here.</description>
		<content:encoded><![CDATA[<p>&#8230; Although in original example  (Constraints), it won&#8217;t do anything.<br />
But still, would be good if this will be listed here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Zura</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1517</link>
		<dc:creator>Zura</dc:creator>
		<pubDate>Mon, 19 Oct 2009 18:01:16 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1517</guid>
		<description>I think just simple

#define UNUSED(x)

will do the job.
It can be used for function formal parameters as well.</description>
		<content:encoded><![CDATA[<p>I think just simple</p>
<p>#define UNUSED(x)</p>
<p>will do the job.<br />
It can be used for function formal parameters as well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Herb Sutter</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1515</link>
		<dc:creator>Herb Sutter</dc:creator>
		<pubDate>Mon, 19 Oct 2009 14:27:30 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1515</guid>
		<description>@Maxim: Hi Maxim! See my note to James; alas, those options don&#039;t actually portably cause compilers to be quiet. Writing static_cast&lt;void&gt;(x) has the same effect as (void)x on the compilers I tried; it causes only one compiler to stop complaining.

@Dmitry: The const isn&#039;t needed, my version works correctly already on the code you gave. See below for details.

@Dmitry, @John: Yup, In general I might like the name &quot;unused&quot; better than &quot;ignore&quot;. And Boost&#039;s name contains both words. :-)

@All: Yes, Boost&#039;s is identical to the one I posted except that it does two things that aren&#039;t really needed:

1. Boost&#039;s explicitly says &quot;inline.&quot; This is usually redundant in practice, though I agree that saying it explicitly doesn&#039;t hurt. The reason it&#039;s redundant in practice is: (a) popular compilers aggressively inline functions anyway even if you didn&#039;t mark them inline, as long as their bodies are visible at compile time (and sometimes even if they aren&#039;t, see for example &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/xbf3tbeh(VS.80).aspx&quot; rel=&quot;nofollow&quot;&gt;VC++ /LTCG&lt;/a&gt;); and (b) this is a template, and all portable templates use the inclusion model and therefore are included with their full bodies, so they are effectively implicitly inline because of (a).

2. Boost&#039;s takes the parameter by const&amp;. That isn&#039;t necessary because template argument deduction will figure out the const anyway. I tried my version with const objects and it worked fine on all compilers, including very old ones.

&lt;b&gt;For bonus points: What about volatile?&lt;/b&gt;

Any time you see &quot;const&quot;, also think &quot;volatile&quot; because it&#039;s treated the same way in the type system. Incidentally, that&#039;s another realistic case where the program performs writes that appear to be dead but aren&#039;t because they go outside the program, namely to hardware.

Q: Does my version and/or Boost&#039;s work with volatile objects? A: Yes, both also work fine with volatile objects, because template argument deduction also figures out the volatile for you anyway. If you want to be super explicit, like Boost was with const&amp;, you&#039;d actually want to take the parameter by const volatile &amp;. But now I&#039;m just being picky to point out that writing either qualifier is redundant, and they didn&#039;t need to write the const either.

Nitpicker&#039;s corner: Yes, I know that compilers are much less likely to warn about apparently-unused volatile variables because they know those variables are for hardware communication and writes to them are never dead. But in fact one compiler I&#039;m testing with does still emit the warning even on apparently-unused volatile variables (it&#039;s the Y2K-vintage Borland 5.5.1 again).</description>
		<content:encoded><![CDATA[<p>@Maxim: Hi Maxim! See my note to James; alas, those options don&#8217;t actually portably cause compilers to be quiet. Writing static_cast&lt;void&gt;(x) has the same effect as (void)x on the compilers I tried; it causes only one compiler to stop complaining.</p>
<p>@Dmitry: The const isn&#8217;t needed, my version works correctly already on the code you gave. See below for details.</p>
<p>@Dmitry, @John: Yup, In general I might like the name &#8220;unused&#8221; better than &#8220;ignore&#8221;. And Boost&#8217;s name contains both words. :-)</p>
<p>@All: Yes, Boost&#8217;s is identical to the one I posted except that it does two things that aren&#8217;t really needed:</p>
<p>1. Boost&#8217;s explicitly says &#8220;inline.&#8221; This is usually redundant in practice, though I agree that saying it explicitly doesn&#8217;t hurt. The reason it&#8217;s redundant in practice is: (a) popular compilers aggressively inline functions anyway even if you didn&#8217;t mark them inline, as long as their bodies are visible at compile time (and sometimes even if they aren&#8217;t, see for example <a href="http://msdn.microsoft.com/en-us/library/xbf3tbeh(VS.80).aspx" rel="nofollow">VC++ /LTCG</a>); and (b) this is a template, and all portable templates use the inclusion model and therefore are included with their full bodies, so they are effectively implicitly inline because of (a).</p>
<p>2. Boost&#8217;s takes the parameter by const&amp;. That isn&#8217;t necessary because template argument deduction will figure out the const anyway. I tried my version with const objects and it worked fine on all compilers, including very old ones.</p>
<p><b>For bonus points: What about volatile?</b></p>
<p>Any time you see &#8220;const&#8221;, also think &#8220;volatile&#8221; because it&#8217;s treated the same way in the type system. Incidentally, that&#8217;s another realistic case where the program performs writes that appear to be dead but aren&#8217;t because they go outside the program, namely to hardware.</p>
<p>Q: Does my version and/or Boost&#8217;s work with volatile objects? A: Yes, both also work fine with volatile objects, because template argument deduction also figures out the volatile for you anyway. If you want to be super explicit, like Boost was with const&amp;, you&#8217;d actually want to take the parameter by const volatile &amp;. But now I&#8217;m just being picky to point out that writing either qualifier is redundant, and they didn&#8217;t need to write the const either.</p>
<p>Nitpicker&#8217;s corner: Yes, I know that compilers are much less likely to warn about apparently-unused volatile variables because they know those variables are for hardware communication and writes to them are never dead. But in fact one compiler I&#8217;m testing with does still emit the warning even on apparently-unused volatile variables (it&#8217;s the Y2K-vintage Borland 5.5.1 again).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by John</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1514</link>
		<dc:creator>John</dc:creator>
		<pubDate>Mon, 19 Oct 2009 12:09:54 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1514</guid>
		<description>boost::ignore_unused_variable_warning(x); is verbose but nice. &lt;3 boost.</description>
		<content:encoded><![CDATA[<p>boost::ignore_unused_variable_warning(x); is verbose but nice. &lt;3 boost.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mailbag: Shutting up compiler warnings by Dmitry Vyukov</title>
		<link>http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1513</link>
		<dc:creator>Dmitry Vyukov</dc:creator>
		<pubDate>Mon, 19 Oct 2009 08:57:59 +0000</pubDate>
		<guid isPermaLink="false">http://herbsutter.wordpress.com/2009/10/18/mailbag-shutting-up-compiler-warnings/#comment-1513</guid>
		<description>Maxim,
IMHO
unused(p0, p3, p7);
looks nicer than:
static_cast(p0);
static_cast(p3);
static_cast(p7);
And it&#039;s a bit easier to search by &#039;unused&#039; than by &#039;static_cast&#039;.</description>
		<content:encoded><![CDATA[<p>Maxim,<br />
IMHO<br />
unused(p0, p3, p7);<br />
looks nicer than:<br />
static_cast(p0);<br />
static_cast(p3);<br />
static_cast(p7);<br />
And it&#8217;s a bit easier to search by &#8216;unused&#8217; than by &#8217;static_cast&#8217;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
