<?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#"
	
	>
<channel>
	<title>
	Comments on: The Results of the Expressive C++17 Coding Challenge	</title>
	<atom:link href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/</link>
	<description>Jonathan Boccara&#039;s blog</description>
	<lastBuildDate>Fri, 27 Oct 2017 15:18:00 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.3</generator>
	<item>
		<title>
		By: simberto		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-618</link>

		<dc:creator><![CDATA[simberto]]></dc:creator>
		<pubDate>Fri, 27 Oct 2017 15:18:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-618</guid>

					<description><![CDATA[This challenge was pretty nice to see what can be done with (upcoming) std-cpp. For my solution I wanted to avoid loops at all and let the parsing be as lazy as possible. That is why I ended up with two custom iterators and ~300 LOC. Which seems pretty huge for such a simple task.

Some personal opinion about new features:
- I like string_view and optional but both are missing utility functions in the std.
- I think structured binding should not be used as default for multi-return values. The function interface is responsible for naming what is returned and returning a pair or tuple will shift that responsibilty to the call side. 
- I will avoid putting [[nodiscard]], [[maybe_unsused]] everywhere and use them only with good reasons.]]></description>
			<content:encoded><![CDATA[<p>This challenge was pretty nice to see what can be done with (upcoming) std-cpp. For my solution I wanted to avoid loops at all and let the parsing be as lazy as possible. That is why I ended up with two custom iterators and ~300 LOC. Which seems pretty huge for such a simple task.</p>
<p>Some personal opinion about new features:<br />
&#8211; I like string_view and optional but both are missing utility functions in the std.<br />
&#8211; I think structured binding should not be used as default for multi-return values. The function interface is responsible for naming what is returned and returning a pair or tuple will shift that responsibilty to the call side.<br />
&#8211; I will avoid putting [[nodiscard]], [[maybe_unsused]] everywhere and use them only with good reasons.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Bartlomiej Filipek		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-617</link>

		<dc:creator><![CDATA[Bartlomiej Filipek]]></dc:creator>
		<pubDate>Fri, 27 Oct 2017 13:09:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-617</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-612&quot;&gt;Steve Klabnik&lt;/a&gt;.

wow, thanks for mentioning our challenge! :)
So now I have another reason to learn Rust :)]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-612">Steve Klabnik</a>.</p>
<p>wow, thanks for mentioning our challenge! 🙂<br />
So now I have another reason to learn Rust 🙂</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: scry		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-616</link>

		<dc:creator><![CDATA[scry]]></dc:creator>
		<pubDate>Thu, 26 Oct 2017 06:53:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-616</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-601&quot;&gt;radeusgd&lt;/a&gt;.

Yeah, this seems obvious. I think the author just wanted to use a for-each loop and avoid an index but got a bit too clever.

I would just use a deque and pop the strings off as they&#039;re written, looks just as nice:

&lt;pre&gt;&lt;code&gt;
while (!tokens.empty()) {
  output &#060;&#060; tokens.pop_front() &#060;&#060; (tokens.empty()? &#039;n&#039; : delimiter);
}
&lt;/code&gt;&lt;/pre&gt;]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-601">radeusgd</a>.</p>
<p>Yeah, this seems obvious. I think the author just wanted to use a for-each loop and avoid an index but got a bit too clever.</p>
<p>I would just use a deque and pop the strings off as they&#8217;re written, looks just as nice:</p>
<pre><code>
while (!tokens.empty()) {
  output &lt;&lt; tokens.pop_front() &lt;&lt; (tokens.empty()? &#039;n&#039; : delimiter);
}
</code></pre>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Oongawa		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-613</link>

		<dc:creator><![CDATA[Oongawa]]></dc:creator>
		<pubDate>Wed, 25 Oct 2017 19:02:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-613</guid>

					<description><![CDATA[The winner (and some other solutions) have a potentially exploitable bug: if a line contains too few columns, `token[target_index] = data` will assign to an out-of-range index.

Easily fixable via using `at()` instead of `[]`, but an interesting reminder that C++ still has sharp corners.]]></description>
			<content:encoded><![CDATA[<p>The winner (and some other solutions) have a potentially exploitable bug: if a line contains too few columns, `token[target_index] = data` will assign to an out-of-range index.</p>
<p>Easily fixable via using `at()` instead of `[]`, but an interesting reminder that C++ still has sharp corners.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Steve Klabnik		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-612</link>

		<dc:creator><![CDATA[Steve Klabnik]]></dc:creator>
		<pubDate>Wed, 25 Oct 2017 16:14:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-612</guid>

					<description><![CDATA[I did this challenge in Rust for fun: http://words.steveklabnik.com/the-expressive-c-17-coding-challenge-in-rust]]></description>
			<content:encoded><![CDATA[<p>I did this challenge in Rust for fun: <a href="http://words.steveklabnik.com/the-expressive-c-17-coding-challenge-in-rust" rel="nofollow ugc">http://words.steveklabnik.com/the-expressive-c-17-coding-challenge-in-rust</a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Porsche9II		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-610</link>

		<dc:creator><![CDATA[Porsche9II]]></dc:creator>
		<pubDate>Wed, 25 Oct 2017 07:42:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-610</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-609&quot;&gt;Bartlomiej Filipek&lt;/a&gt;.

Yes - this would be really interesting
Hw much speed would I loose for expresiveness?

What about using threads for parallel I/O and parsing?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-609">Bartlomiej Filipek</a>.</p>
<p>Yes &#8211; this would be really interesting<br />
Hw much speed would I loose for expresiveness?</p>
<p>What about using threads for parallel I/O and parsing?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Bartlomiej Filipek		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-609</link>

		<dc:creator><![CDATA[Bartlomiej Filipek]]></dc:creator>
		<pubDate>Wed, 25 Oct 2017 06:25:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-609</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-600&quot;&gt;Porsche9II&lt;/a&gt;.

maybe we could do another challenge with the performance in mind :) I wonder how many tricks could be used here...!
possibly STD iostreams could lose against using plain C style file manipulations.

I was also impressed that a few participants used that ostream_joiner iterator, which is a cool optimization for playing with ostreams.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-600">Porsche9II</a>.</p>
<p>maybe we could do another challenge with the performance in mind 🙂 I wonder how many tricks could be used here&#8230;!<br />
possibly STD iostreams could lose against using plain C style file manipulations.</p>
<p>I was also impressed that a few participants used that ostream_joiner iterator, which is a cool optimization for playing with ostreams.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: sehe		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-607</link>

		<dc:creator><![CDATA[sehe]]></dc:creator>
		<pubDate>Tue, 24 Oct 2017 07:53:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-607</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-606&quot;&gt;Porsche9II&lt;/a&gt;.

I haven&#039;t. Feel free to do :) Obviously the feature sets are very different. I&#039;d be surprised if my code would be slower on C locale and without quoting requirements.

Note I have a number of related answers on stackoverflow.com, e.g. https://stackoverflow.com/questions/23699731/simplest-way-to-read-a-csv-file-mapped-to-memory/23703810#23703810 which did 116 MiB of CSV (2.5Mio lines[1]) in ~1 second. 

That&#039;s years ago though. No chance of c++14 even :)]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-606">Porsche9II</a>.</p>
<p>I haven&#8217;t. Feel free to do 🙂 Obviously the feature sets are very different. I&#8217;d be surprised if my code would be slower on C locale and without quoting requirements.</p>
<p>Note I have a number of related answers on stackoverflow.com, e.g. <a href="https://stackoverflow.com/questions/23699731/simplest-way-to-read-a-csv-file-mapped-to-memory/23703810#23703810" rel="nofollow ugc">https://stackoverflow.com/questions/23699731/simplest-way-to-read-a-csv-file-mapped-to-memory/23703810#23703810</a> which did 116 MiB of CSV (2.5Mio lines[1]) in ~1 second. </p>
<p>That&#8217;s years ago though. No chance of c++14 even 🙂</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Porsche9II		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-606</link>

		<dc:creator><![CDATA[Porsche9II]]></dc:creator>
		<pubDate>Tue, 24 Oct 2017 07:41:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-606</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-604&quot;&gt;sehe&lt;/a&gt;.

Hi Sehe,
have you tested your solution on large csv files and compared it to the winning solution or to 
https://github.com/ben-strasser/fast-cpp-csv-parser?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-604">sehe</a>.</p>
<p>Hi Sehe,<br />
have you tested your solution on large csv files and compared it to the winning solution or to<br />
<a href="https://github.com/ben-strasser/fast-cpp-csv-parser" rel="nofollow ugc">https://github.com/ben-strasser/fast-cpp-csv-parser</a>?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: sehe		</title>
		<link>https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/#comment-603</link>

		<dc:creator><![CDATA[sehe]]></dc:creator>
		<pubDate>Tue, 24 Oct 2017 06:55:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=2420#comment-603</guid>

					<description><![CDATA[I&#039;d like to note that my answer was under 100 lines of code (92 lines, without the marketing blurb at the top! http://coliru.stacked-crooked.com/a/4675a74c8124750f)

It was fun. I must say I&#039;ve been equally abhorred and informed by some of the contending solutions. So that was fun :)]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d like to note that my answer was under 100 lines of code (92 lines, without the marketing blurb at the top! <a href="http://coliru.stacked-crooked.com/a/4675a74c8124750f" rel="nofollow ugc">http://coliru.stacked-crooked.com/a/4675a74c8124750f</a>)</p>
<p>It was fun. I must say I&#8217;ve been equally abhorred and informed by some of the contending solutions. So that was fun 🙂</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
