<?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>Code Buddy &#187; Brain Teasers</title>
	<atom:link href="http://www.codebuddy.co.uk/category/brain-teasers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codebuddy.co.uk</link>
	<description>Ramblings from the Coding Trenches</description>
	<lastBuildDate>Wed, 23 Dec 2009 13:55:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Brain Teaser: Streaming An Enumeration In C++</title>
		<link>http://www.codebuddy.co.uk/brain-teaser-streaming-an-enumeration-in-c-plus-plus/</link>
		<comments>http://www.codebuddy.co.uk/brain-teaser-streaming-an-enumeration-in-c-plus-plus/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 20:33:59 +0000</pubDate>
		<dc:creator>codebuddy</dc:creator>
				<category><![CDATA[Brain Teasers]]></category>

		<guid isPermaLink="false">http://www.codebuddy.co.uk/?p=131</guid>
		<description><![CDATA[Streaming an enumeratoin in C++, what could be easier? Can you spot the bug in the following code?

typedef enum &#123;
    SEASON_UNDEF,
    SEASON_SUMMER,
    SEASON_AUTUMN,
    SEASON_WINTER,
    SEASON_SPRING,
    SEASON_NUM_TYPES,
&#125; SEASON;
&#160;
&#160;
std::ostream&#38; operator&#60;&#60;&#40;std::ostream&#38; rOs, 
        [...]]]></description>
			<content:encoded><![CDATA[<p>Streaming an enumeratoin in C++, what could be easier? Can you spot the bug in the following code?</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">enum</span> <span style="color: #008000;">&#123;</span>
    SEASON_UNDEF,
    SEASON_SUMMER,
    SEASON_AUTUMN,
    SEASON_WINTER,
    SEASON_SPRING,
    SEASON_NUM_TYPES,
<span style="color: #008000;">&#125;</span> SEASON<span style="color: #008080;">;</span>
&nbsp;
&nbsp;
std<span style="color: #008080;">::</span><span style="color: #007788;">ostream</span><span style="color: #000040;">&amp;</span> operator<span style="color: #000080;">&lt;&lt;</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">ostream</span><span style="color: #000040;">&amp;</span> rOs, 
                         <span style="color: #0000ff;">const</span> SEASON <span style="color: #000040;">&amp;</span> rRhs<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">switch</span> <span style="color: #008000;">&#40;</span>rRhs<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">case</span> SEASON_UNDEF<span style="color: #008080;">:</span>
        rOs <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;SEASON_UNDEF&quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">case</span> SEASON_SUMMER<span style="color: #008080;">:</span>
        rOs <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;SEASON_SUMMER&quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">case</span> SEASON_AUTUMN<span style="color: #008080;">:</span>
        rOs <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;SEASON_AUTUMN&quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">case</span> SEASON_WINTER<span style="color: #008080;">:</span>
        rOs <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;SEASON_WINTER&quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">case</span> SEASON_SPRING<span style="color: #008080;">:</span>
        rOs <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;SEASON_SPRING&quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">default</span><span style="color: #008080;">:</span>
        rOs <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Unknown SEASON: &quot;</span> <span style="color: #000080;">&lt;&lt;</span> rRhs<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">return</span> rOs<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Scroll down for the answer&#8230;.</p>
<p>&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br /> Nearly there&#8230;&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;</p>
<p>You&#8217;ve got it, its the default case. This makes a recusive call which will never terminate. Now how much stack space do I have&#8230;.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">rOs <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Unknown SEASON: &quot;</span> <span style="color: #000080;">&lt;&lt;</span> rRhs<span style="color: #008080;">;</span> <span style="color: #666666;">// Recusive call!</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebuddy.co.uk/brain-teaser-streaming-an-enumeration-in-c-plus-plus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

