<?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: Strong types: inheriting the underlying type&#8217;s functionalities	</title>
	<atom:link href="https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/</link>
	<description>Jonathan Boccara&#039;s blog</description>
	<lastBuildDate>Thu, 20 Dec 2018 21:41:39 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.3</generator>
	<item>
		<title>
		By: Peter		</title>
		<link>https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-1537</link>

		<dc:creator><![CDATA[Peter]]></dc:creator>
		<pubDate>Mon, 17 Dec 2018 10:28:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=696#comment-1537</guid>

					<description><![CDATA[Hey Jonathan,
First of all, great series, I learn a lot from the these posts.
I found though that the &#039;public&#039; inheritance modifier is missing when the NamedType inherits explicity from the Addable class. It is not possible to call the operator+. (when the variadic template is used, the modifier is there)]]></description>
			<content:encoded><![CDATA[<p>Hey Jonathan,<br />
First of all, great series, I learn a lot from the these posts.<br />
I found though that the &#8216;public&#8217; inheritance modifier is missing when the NamedType inherits explicity from the Addable class. It is not possible to call the operator+. (when the variadic template is used, the modifier is there)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Bárdosi Péter		</title>
		<link>https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-323</link>

		<dc:creator><![CDATA[Bárdosi Péter]]></dc:creator>
		<pubDate>Thu, 08 Jun 2017 04:44:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=696#comment-323</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-316&quot;&gt;Jonathan Boccara&lt;/a&gt;.

OK! Thanks!]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-316">Jonathan Boccara</a>.</p>
<p>OK! Thanks!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Boccara		</title>
		<link>https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-316</link>

		<dc:creator><![CDATA[Jonathan Boccara]]></dc:creator>
		<pubDate>Wed, 07 Jun 2017 20:05:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=696#comment-316</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-302&quot;&gt;Bárdosi Péter&lt;/a&gt;.

Hey Péter,
This is just a technical artifact for allowing SFINAE to kick in. Indeed, when instantiating the constructor, T is no longer a template parameter because it has always been resolved earlier, when instantiating the class. Hence we need a new template parameter, T_. And since we want to do the check on T, we set T_=T. Makes more sense? This was done in &lt;a href=&quot;https://www.fluentcpp.com/2017/03/06/passing-strong-types-reference-revisited/&quot;&gt;passing strong types by references&lt;/a&gt;, and Jonathan Müller has written a very good &lt;a href=&quot;http://foonathan.net/blog/2016/12/21/conditionally-removing-functions.html#comment-3065929457&quot; rel=&quot;nofollow&quot;&gt;post about this technique&lt;/a&gt;.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-302">Bárdosi Péter</a>.</p>
<p>Hey Péter,<br />
This is just a technical artifact for allowing SFINAE to kick in. Indeed, when instantiating the constructor, T is no longer a template parameter because it has always been resolved earlier, when instantiating the class. Hence we need a new template parameter, T_. And since we want to do the check on T, we set T_=T. Makes more sense? This was done in <a href="https://www.fluentcpp.com/2017/03/06/passing-strong-types-reference-revisited/">passing strong types by references</a>, and Jonathan Müller has written a very good <a href="http://foonathan.net/blog/2016/12/21/conditionally-removing-functions.html#comment-3065929457" rel="nofollow">post about this technique</a>.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Bárdosi Péter		</title>
		<link>https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-303</link>

		<dc:creator><![CDATA[Bárdosi Péter]]></dc:creator>
		<pubDate>Wed, 31 May 2017 20:06:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=696#comment-303</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-302&quot;&gt;Bárdosi Péter&lt;/a&gt;.

Maybe T&#038;&#038; is an rvalue reference, but T_&#038;&#038; is a forwarding reference?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-302">Bárdosi Péter</a>.</p>
<p>Maybe T&amp;&amp; is an rvalue reference, but T_&amp;&amp; is a forwarding reference?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Bárdosi Péter		</title>
		<link>https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/#comment-302</link>

		<dc:creator><![CDATA[Bárdosi Péter]]></dc:creator>
		<pubDate>Wed, 31 May 2017 19:50:00 +0000</pubDate>
		<guid isPermaLink="false">https://www.fluentcpp.com/?p=696#comment-302</guid>

					<description><![CDATA[Hi,
sorry, but I don&#039;t understand this:

template
      
      
        
            explicit NamedTypeImpl(T&#038;&#038; value, typename std::enable_if&#060;!std::is_reference{}, std::nullptr_t&#062;::type = nullptr) : value_(std::move(value)) {}

When I change values type from T&#038;&#038; to T_&#038;&#038;, the code functions differently. Why?

P00t]]></description>
			<content:encoded><![CDATA[<p>Hi,<br />
sorry, but I don&#8217;t understand this:</p>
<p>template</p>
<p>            explicit NamedTypeImpl(T&amp;&amp; value, typename std::enable_if&lt;!std::is_reference{}, std::nullptr_t&gt;::type = nullptr) : value_(std::move(value)) {}</p>
<p>When I change values type from T&amp;&amp; to T_&amp;&amp;, the code functions differently. Why?</p>
<p>P00t</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
