<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bubblescope &#187; C++</title>
	<atom:link href="http://www.bubblescope.net/wp/category/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bubblescope.net/wp</link>
	<description>Puzzle gaming with secret sauce!</description>
	<lastBuildDate>Wed, 22 Jul 2009 22:06:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Concepts in C++ &#8211; gone for now, but not forgotten</title>
		<link>http://www.bubblescope.net/wp/2009/07/concepts-in-c-gone-for-now-but-not-forgotten/</link>
		<comments>http://www.bubblescope.net/wp/2009/07/concepts-in-c-gone-for-now-but-not-forgotten/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 22:04:51 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[concepts]]></category>

		<guid isPermaLink="false">http://www.bubblescope.net/wp/?p=3</guid>
		<description><![CDATA[One of the biggest parts, at least in terms of publicity, of the upcoming new C++ standard was to be concepts. Concepts were going to solve a huge set of problems, making templated code easier to write, debug and use. Instead concepts have become one of the biggest causalities in the journey to the next C++ standard.]]></description>
			<content:encoded><![CDATA[<p>One of the biggest parts, at least in terms of publicity, of the upcoming new C++ standard was to be concepts. Concepts were going to solve a huge set of problems, making templated code easier to write, debug and use. Instead concepts have become one of the biggest causalities in the journey to the next C++ standard.</p>
<p>There seems to be quite a lot of misunderstanding about exactly what has happened, and why. While I was not personally at the meeting, I have been following the evolution of the next C++ standard, and even helping a little along the way where I can, as a member of the C++ committee. Therefore I&#8217;ll try to cast a little light on what has gone on.</p>
<p>First of all, let me say that being a &#8220;member of the C++ committee&#8221;, is a much less impressive position than it sounds. There is no test to get onto the C++ committee, and a large proportion of the work is done by volunteers. If you thought there was large amounts of money in the standardisation and development of C++, you would be wrong. Many companies do help, mainly by allowing extremely talented members of staff to spend their valuable time, but there is never enough hours to go around all the work which people would like to do, toward improving C++.</p>
<p>It is this, fundamentally, which stopped concepts. Concepts have been the single biggest suggested change to the new C++ standard, by at least an order of magnitude. Looking through the standard, it changes around a third of the standard, mainly through the addition of concepts to the entire standard library.</p>
<p>If the new hashed containers turned out to be bad, which would be surprising considering a close variant has been implemented in boost for years and used by large number of people, they could just be ignored. If lambda functions, also now implemented in multiple compilers, was faulty, it would still be possible to ignore them or limit their use.</p>
<p>Concepts on the other hand are not avoidable. Any user of the standard library would be faced by them, although they might not realise it, from day one of a C++0x compiler. I believe, and this is of course only my opinion, badly written concepts could have sunk the new C++ standard.</p>
<p>So are concepts fundamentally bad, or broken? I don&#8217;t think so. An earlier version of concepts were implemented as a variant of g++, and I personally used them to some success in practice, as an experiment. There were some rough edges, which should not be a surprise for such a big new feature.</p>
<p>Why did concepts get taken out? I believe the primary problem was simply lack of time and man-power. The concepts implemented in g++ have not been kept up-to-date with the standard draft, no other implementations exist, and none are expected in a reasonable time-frame. For such a huge feature, it simply it&#8217;s sensible to release a standardised text which would effect so much of the C++ standard with such limited implementation experience.</p>
<p>Where do this leave the new C++ standard? Actually, in a very fine state. All the other new functionality in the C++ standard was, by necessity, designed and tested in compilers without concepts. While the current draft is filled with concepts, this text was added quite recently and can easily be taken out. The many other new and exciting features live on.</p>
<p>Where does this leave concepts? I do not believe this is the last we will see of them. While they have been taken out of the current draft of the standard, I think most C++ developers accept that in the long term improvements to the templating system are an important feature. With more implementation and usage experience, I am convinced they will make a come-back.</p>
<p>Now you have read my opinion, you should certainly go and read the much better written, and well informed, articles by <a href="http://herbsutter.wordpress.com/2009/07/21/trip-report/">Herb Sutter</a> and <a title="Bjarne Stroustrup" href="http://www.ddj.com/architect/218600111">Bjarne Stroustrup</a> on this subject!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bubblescope.net/wp/2009/07/concepts-in-c-gone-for-now-but-not-forgotten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

