<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[constexpr ausnutzbar für pointer to member function type deduction?]]></title><description><![CDATA[<p>Hallo, ich spielte hier gerade mal so herum und fragte mich, ob denn constexpr nicht irgendwie dafür ausgenutzt werden kann, um die Template-Parameter-Suche von Funktionen auf die Template-Argument-Liste eines Typs herzunehmen.<br />
Erm, wenn mir die Worte dazu einfielen, wäre das glaube ich verständlicher, das ist so natürlich nicht richtig ausgedrückt.</p>
<p>Blödes Beispiel:</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
struct foo {
	T operator()(std::string id, up::member::visibility_types vis)
	{
		return T(std::move(id), vis);
	}
};

template&lt; typename Class, typename T &gt;
constexpr auto auto_integer(T (Class::*Getter)() const, void (Class::*Setter)(T), bool AutoEvents)
{
	return foo&lt;up::adapters::method_integer&lt;Class, T, Getter, Setter, nullptr, AutoEvents&gt;&gt;();
}

namespace {
	using short_member = up::adapters::method_integer&lt;sample_struct, short, &amp;sample_struct::get_short, &amp;sample_struct::set_short, nullptr, true &gt;;
	using float_member = up::adapters::method_real   &lt;sample_struct, float, &amp;sample_struct::get_float, &amp;sample_struct::set_float, true &gt;;

	auto sample_struct_class =
		up::static_class&lt; sample_struct &gt;(
			&quot;up.sample_struct&quot;,
			up::bases&lt;some_base, some_base2&gt;(),

// -&gt;
			auto_integer(&amp;sample_struct::get_short, &amp;sample_struct::set_short, true)(&quot;short_val&quot;, up::member::visibility_types::Public),
// &lt;-

			short_member(&quot;short_val&quot;, up::member::visibility_types::Public),
			float_member(&quot;float_val&quot;, up::member::visibility_types::Public)
			);
}
</code></pre>
<p>Compiler sagt: nee! Gibt's da vielleicht irgendeinen Trick?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333064/constexpr-ausnutzbar-für-pointer-to-member-function-type-deduction</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 06:50:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333064.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Jun 2015 16:49:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to constexpr ausnutzbar für pointer to member function type deduction? on Tue, 09 Jun 2015 16:49:14 GMT]]></title><description><![CDATA[<p>Hallo, ich spielte hier gerade mal so herum und fragte mich, ob denn constexpr nicht irgendwie dafür ausgenutzt werden kann, um die Template-Parameter-Suche von Funktionen auf die Template-Argument-Liste eines Typs herzunehmen.<br />
Erm, wenn mir die Worte dazu einfielen, wäre das glaube ich verständlicher, das ist so natürlich nicht richtig ausgedrückt.</p>
<p>Blödes Beispiel:</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
struct foo {
	T operator()(std::string id, up::member::visibility_types vis)
	{
		return T(std::move(id), vis);
	}
};

template&lt; typename Class, typename T &gt;
constexpr auto auto_integer(T (Class::*Getter)() const, void (Class::*Setter)(T), bool AutoEvents)
{
	return foo&lt;up::adapters::method_integer&lt;Class, T, Getter, Setter, nullptr, AutoEvents&gt;&gt;();
}

namespace {
	using short_member = up::adapters::method_integer&lt;sample_struct, short, &amp;sample_struct::get_short, &amp;sample_struct::set_short, nullptr, true &gt;;
	using float_member = up::adapters::method_real   &lt;sample_struct, float, &amp;sample_struct::get_float, &amp;sample_struct::set_float, true &gt;;

	auto sample_struct_class =
		up::static_class&lt; sample_struct &gt;(
			&quot;up.sample_struct&quot;,
			up::bases&lt;some_base, some_base2&gt;(),

// -&gt;
			auto_integer(&amp;sample_struct::get_short, &amp;sample_struct::set_short, true)(&quot;short_val&quot;, up::member::visibility_types::Public),
// &lt;-

			short_member(&quot;short_val&quot;, up::member::visibility_types::Public),
			float_member(&quot;float_val&quot;, up::member::visibility_types::Public)
			);
}
</code></pre>
<p>Compiler sagt: nee! Gibt's da vielleicht irgendeinen Trick?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456224</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 09 Jun 2015 16:49:14 GMT</pubDate></item><item><title><![CDATA[Reply to constexpr ausnutzbar für pointer to member function type deduction? on Tue, 09 Jun 2015 20:15:50 GMT]]></title><description><![CDATA[<p>Ich habe nicht Verstanden was du erreichen möchtest. Für mich sieht es so aus als ob in deiner markierten Zeile die Funktion auto_integer aufgerufen wird, das gibt irgendein Funktionsobjekt zurück, welches dann auch mit irgendwelchen Parametern aufgerufen wird. Und dann landet das alles in den Parametern für den Konstruktor von static_class. Wofür soll man da jetzt constexpr brauchen? Was für eine Fehlermeldung gibts beim compilieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456252</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Tue, 09 Jun 2015 20:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to constexpr ausnutzbar für pointer to member function type deduction? on Tue, 09 Jun 2015 20:39:03 GMT]]></title><description><![CDATA[<p>Nun, der Gedanke war der, dass man ja beim Template immer</p>
<pre><code class="language-cpp">template&lt; typename T, typename S, S (T::*Ptr)() &gt;
</code></pre>
<p>schreiben muss, obwohl ja eigentlich ein Memberpointer alle Informationen für die ersten zwei Parameter schon beinhaltet.<br />
Also wollte ich eine constexpr-Funktion schreiben, die eben per Matching die ersten beiden Parameter (Typen) aus den Compile-Zeit-Zeigern herausfischt, um sie dann in's Template einzusetzen.<br />
Der Compiler aber sagt, dass die Funktionsparameter der constexpr-Funktion keine gültigen Argumente für den Template-Typ method_integer sind (Also was in Getter und Setter landet).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456254</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 09 Jun 2015 20:39:03 GMT</pubDate></item><item><title><![CDATA[Reply to constexpr ausnutzbar für pointer to member function type deduction? on Tue, 09 Jun 2015 22:01:51 GMT]]></title><description><![CDATA[<p><a href="https://isocpp.org/files/papers/n3601.html" rel="nofollow">Implicit template parameters</a> hättest du auch gerne, was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2456265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2456265</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 09 Jun 2015 22:01:51 GMT</pubDate></item></channel></rss>