<?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[Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11)]]></title><description><![CDATA[<p>Ich habe mir gerade Gedanken gemacht, welche Sprachfeatures ich nach C++11 gerne hätte. Hier eine Liste, gebt mir euer Feedback dazu und ergänzt auch eure Wünsche, würde mich mal interessieren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>1.) Expliziter Aufruf von default-Argumenten</p>
<pre><code class="language-cpp">void foo(int a = 42, double d = 3.14);
foo();
foo(default, 123.456);
foo(123456, default);
foo(default, default);
foo(default...);
foor(123, default...);
</code></pre>
<p>2.) &quot;Variadic typedef&quot;</p>
<pre><code class="language-cpp">template &lt;typename... Args&gt;
struct bar
{
    typedef... Args MyTypes;
};
</code></pre>
<p>MyTypes ist ein Parameter-Pack, das wiederverwendet werden kann, z.B.:</p>
<pre><code class="language-cpp">std::function&lt;void(bar&lt;int, double, bool&gt;::MyTypes...)&gt; func;
</code></pre>
<p>Zugriff mit typename innerhalb eines Templates:</p>
<pre><code class="language-cpp">typename bar&lt;int, double, char&gt;::MyTypes...
</code></pre>
<p>3.) &quot;Forward typedef&quot;<br />
Deklariert einen Typen, allerdings können auch typedefs deklariert werden, z.B.:</p>
<pre><code class="language-cpp">typedef std::string;
typedef std::istream;
</code></pre>
<p>4.) Beliebige values als Templateparameter (sowohl für Klassen, als auch für Funktionen)</p>
<pre><code class="language-cpp">template &lt;auto T&gt; void baz();

baz&lt;5&gt;();
baz&lt;'c'&gt;();
</code></pre>
<p>Variadic:</p>
<pre><code class="language-cpp">template &lt;auto... Values&gt; struct qux {};

qux&lt;5, 'c'&gt; q;
qux&lt;'c', 5&gt; r;
</code></pre>
<p>Der Typ des Arguments bzw der Argumente ist dann</p>
<pre><code class="language-cpp">decltype(T)
</code></pre>
<p>bzw</p>
<pre><code class="language-cpp">decltype(Values)...
</code></pre>
<p>5.) Typen mit constexpr Konstruktor als Template-Parameter Wert</p>
<pre><code class="language-cpp">struct quuux { constexpr quuux(int); };

template &lt;quuux Q&gt; void foobar();
foobar&lt;quuux(42)&gt;();
</code></pre>
<p>Das einzige Problem dabei ist, dass man Konstruktoren ohne Parameter nicht sinnvoll aufrufen kann. quuux() wäre ein Funktion, die quuux zurückgibt.</p>
<p>Die Liste ist übrigens nicht nach Priorität sortiert. Irgendwas hab ich bestimmt vergessen.</p>
<p>Grüße,<br />
PI</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293223/eure-wünsche-an-sprachfeatures-für-den-nächsten-standard-nach-c-11</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 09:58:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293223.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Sep 2011 07:09:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 07:21:19 GMT]]></title><description><![CDATA[<p>Ich habe mir gerade Gedanken gemacht, welche Sprachfeatures ich nach C++11 gerne hätte. Hier eine Liste, gebt mir euer Feedback dazu und ergänzt auch eure Wünsche, würde mich mal interessieren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>1.) Expliziter Aufruf von default-Argumenten</p>
<pre><code class="language-cpp">void foo(int a = 42, double d = 3.14);
foo();
foo(default, 123.456);
foo(123456, default);
foo(default, default);
foo(default...);
foor(123, default...);
</code></pre>
<p>2.) &quot;Variadic typedef&quot;</p>
<pre><code class="language-cpp">template &lt;typename... Args&gt;
struct bar
{
    typedef... Args MyTypes;
};
</code></pre>
<p>MyTypes ist ein Parameter-Pack, das wiederverwendet werden kann, z.B.:</p>
<pre><code class="language-cpp">std::function&lt;void(bar&lt;int, double, bool&gt;::MyTypes...)&gt; func;
</code></pre>
<p>Zugriff mit typename innerhalb eines Templates:</p>
<pre><code class="language-cpp">typename bar&lt;int, double, char&gt;::MyTypes...
</code></pre>
<p>3.) &quot;Forward typedef&quot;<br />
Deklariert einen Typen, allerdings können auch typedefs deklariert werden, z.B.:</p>
<pre><code class="language-cpp">typedef std::string;
typedef std::istream;
</code></pre>
<p>4.) Beliebige values als Templateparameter (sowohl für Klassen, als auch für Funktionen)</p>
<pre><code class="language-cpp">template &lt;auto T&gt; void baz();

baz&lt;5&gt;();
baz&lt;'c'&gt;();
</code></pre>
<p>Variadic:</p>
<pre><code class="language-cpp">template &lt;auto... Values&gt; struct qux {};

qux&lt;5, 'c'&gt; q;
qux&lt;'c', 5&gt; r;
</code></pre>
<p>Der Typ des Arguments bzw der Argumente ist dann</p>
<pre><code class="language-cpp">decltype(T)
</code></pre>
<p>bzw</p>
<pre><code class="language-cpp">decltype(Values)...
</code></pre>
<p>5.) Typen mit constexpr Konstruktor als Template-Parameter Wert</p>
<pre><code class="language-cpp">struct quuux { constexpr quuux(int); };

template &lt;quuux Q&gt; void foobar();
foobar&lt;quuux(42)&gt;();
</code></pre>
<p>Das einzige Problem dabei ist, dass man Konstruktoren ohne Parameter nicht sinnvoll aufrufen kann. quuux() wäre ein Funktion, die quuux zurückgibt.</p>
<p>Die Liste ist übrigens nicht nach Priorität sortiert. Irgendwas hab ich bestimmt vergessen.</p>
<p>Grüße,<br />
PI</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124604</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 28 Sep 2011 07:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 07:22:31 GMT]]></title><description><![CDATA[<p>1. Module statt Headerfiles.<br />
2. Ne richtig dicke Standardbibliothek.</p>
<p>2 wird warscheinlich kommen (Boost.Filesystem + Boost.Asio klingen ja schonmal gut), 1 mit Glück. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124608</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Wed, 28 Sep 2011 07:22:31 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:00:44 GMT]]></title><description><![CDATA[<p>Aktual-Funktionsparameter über Namen:</p>
<pre><code class="language-cpp">void foo(int a = 42, double d = 3.14);

foo(a := 10); //d = default
foo(d := 0.707); // a = default
foo(d := 10.2, a := 2.7182) //Reihenfolge egal
</code></pre>
<p>Das würde auch die Sache mit den Defaults aus Deinem Beispiel überflüssig machen. Außerdem werden Aufrufe besser lesbar, weil man direkt sieht, welcher Wert zu welchem Parameter gehören soll. Muss nur eine ordentliche Syntax her.</p>
<p>&quot;Strenge&quot; typedefs:</p>
<pre><code class="language-cpp">typedef unsigned int new some_type;
typedef unsigned int new other_type;

some_type a = 42;
other_type b = a; //Fehler b nicht in a konvertierbar
other_type b = static_cast&lt;b&gt;(a); //okay, explizite Konvertierung
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2124614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124614</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:00:44 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:25:21 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>&quot;Strenge&quot; typedefs:</p>
<pre><code class="language-cpp">typedef unsigned int new some_type;
typedef unsigned int new other_type;

some_type a = 42;
other_type b = a; //Fehler b nicht in a konvertierbar
other_type b = static_cast&lt;b&gt;(a); //okay, explizite Konvertierung
</code></pre>
</blockquote>
<p>Genau das suche ich seit einiger Zeit! Ein Workaround hierfür ist aufwendig. Alle Operationen müssen überladen werden.</p>
<pre><code class="language-cpp">enum some_type {
};

inline some_type operator+ (some_type s, int i) {
  return static_cast&lt;some_type&gt; (static_cast&lt;int&gt; (s) + i);
}

inline some_type operator+ (some_type s1, some_type s2) {
  return static_cast&lt;some_type&gt; (static_cast&lt;int&gt; (s1) + static_cast&lt;int&gt; (s2));
}

inline void operator++ (some_type&amp; s) {
  s = static_cast&lt;some_type&gt; (static_cast&lt;int&gt; (s) + 1);
}

/// etc.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2124618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124618</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:25:21 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:23:26 GMT]]></title><description><![CDATA[<p>Reflection.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124620</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:23:26 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:29:30 GMT]]></title><description><![CDATA[<p>Habe auch so etwas gesehen, ist das C++11 ?</p>
<pre><code class="language-cpp">enum Selection : unsigned int {
  None = 0,
  Single = 1,
  Multiple = 0xFFFF0000UL
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2124623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124623</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:31:06 GMT]]></title><description><![CDATA[<p>Sprachkern:<br />
Ich möchte direkter das aufschreiben können, was ich meine. Möglichst wenig Redundanz und möglichst wenig Boilerplate. Konkreter:<br />
- Concepts (Ersatz für enable_if-Hack + Type-Checking für Templates)<br />
- Einfachere &quot;Metaprogrammierung&quot;, beispielsweise syntaktisch schönere Typ-Transformationen ohne typename/::type<br />
- Modules</p>
<p>Die ersten beiden Punkte lassen sich vielleicht gemeinsam elegant erschlagen. Die Concepts-Entwürfe, die es vorher gab, haben mir aber nicht gefallen und ich bin froh, dass wir in C++2011 nicht so etwas halbgares angedreht bekommen haben.</p>
<p>Bibliothek:<br />
- File System</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124624</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:35:22 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<p>1. Module statt Headerfiles.<br />
2. Ne richtig dicke Standardbibliothek.</p>
</blockquote>
<p>Gibt's schon, heißt Python. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124625</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:35:22 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:40:32 GMT]]></title><description><![CDATA[<p>1. Concepts<br />
2. Header für sinnlos machen, also wohl so was wie Module einführen<br />
3. TR2 vorher fertig stellen und danach übernehmen</p>
<p>Die Sprache selbst sollte vorerst nicht weiter aufgebohrt werden, da die C++11 Features in der C++ Community erst mal heimisch werden sollten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124627</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:40:32 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:45:18 GMT]]></title><description><![CDATA[<p>Was ich mir wünschen würde, und was vermutlich niemals kommt wäre eine ABI-Änderung die zumindest auf dem jeweiligen Betriebsystem Bibliotheken (wie lib/dll unter Windows) direkt ermöglich, die auch vom Compiler unabhängig sind und Klassen etc. über die Schnittstellen hinweg zulassen.</p>
<p>Ebenso fände ich eine Abkehr von der C-Kompatibilität nicht schlecht, und damit verbunden ein Aufräumen im C++ Standard. Sinnvoll wäre dann natürlich ein Schlüsselwort das Übergänge definiert um mit C kommunizieren zu können (Vergleichbar mit z.B. C# und &quot;unsafe&quot; das Bereichsweise Zeiger zulässt).</p>
<p>Und zu guter letzt wäre es schön wenn es neben der C++ Standardbibliothek noch weitere Standardisierte Bibliotheken geben würden, die spezielle Bereiche, die zwar nicht auf jeder aber doch auf einem großen Teil aller Plattformen laufen würden (Konkret denke ich z.B. an ein standardisiertes UI-Framework im Stile der Standardbibliothek, und mit Nutzen derselben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124629</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:56:46 GMT]]></title><description><![CDATA[<p>Module fände ich zwar auch gut, jedoch sollte man es bei einer Trennung zwischen Interface und Implementierung belassen. So wie es z.B. in Java gehandhabt wird, finde ich es eher suboptimal. Vielleicht ein System ähnlich wie in Ada.<br />
Ein einheitliches ABI wäre wirklich toll, ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124632</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 08:57:07 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Language_Integrated_Query" rel="nofollow">LINQ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124633</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Sep 2011 08:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:06:01 GMT]]></title><description><![CDATA[<p>- Eigenshaften<br />
- Funktionszeiger auf Methoden eines Objekts</p>
<p>ja ich weiss, sind typische C++ Builder Erweiterungen, die ich persönlich aber für sinnvoll halte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124635</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:02:27 GMT]]></title><description><![CDATA[<p>Zwei kleine schöne C++ LINQ Beispiel:</p>
<pre><code class="language-cpp">struct Kunde { string name; int alter; };

vector&lt;Kunde&gt; kunden = ...
auto alleKundenNamen = kunden.select(x =&gt; x.name);
</code></pre>
<pre><code class="language-cpp">struct Kunde { string name; int alter; };

vector&lt;Kunde&gt; kunden = ...
auto alleMinderjaehrigenKunden = kunden.where(x =&gt; x.alter &lt; 18);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2124637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124637</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:12:35 GMT]]></title><description><![CDATA[<p>Burkhi schrieb:</p>
<blockquote>
<p>- Funktionszeiger auf Methoden eines Objekts</p>
</blockquote>
<p>Wenn du Methodenzeiger meinst, die gibts doch schon. Oder meinst du was anderes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124642</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:12:35 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:22:00 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Burkhi schrieb:</p>
<blockquote>
<p>- Funktionszeiger auf Methoden eines Objekts</p>
</blockquote>
<p>Wenn du Methodenzeiger meinst, die gibts doch schon. Oder meinst du was anderes?</p>
</blockquote>
<p>Er meint Funktionszeiger auf &quot;gebundende&quot; Funktionen -- die also schon mit einem bestimmten Objekt verknüpft sind -- quasi den this-Parameter mit beinhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124648</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:38:19 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Burkhi schrieb:</p>
<blockquote>
<p>- Funktionszeiger auf Methoden eines Objekts</p>
</blockquote>
<p>Wenn du Methodenzeiger meinst, die gibts doch schon. Oder meinst du was anderes?</p>
</blockquote>
<p>Er meint Funktionszeiger auf &quot;gebundende&quot; Funktionen -- die also schon mit einem bestimmten Objekt verknüpft sind -- quasi den this-Parameter mit beinhalten.</p>
</blockquote>
<p>So ist es. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124651</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:38:19 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:41:13 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Burkhi schrieb:</p>
<blockquote>
<p>- Funktionszeiger auf Methoden eines Objekts</p>
</blockquote>
<p>Wenn du Methodenzeiger meinst, die gibts doch schon. Oder meinst du was anderes?</p>
</blockquote>
<p>Er meint Funktionszeiger auf &quot;gebundende&quot; Funktionen -- die also schon mit einem bestimmten Objekt verknüpft sind -- quasi den this-Parameter mit beinhalten.</p>
</blockquote>
<p>Bekommt man das nicht quasi mit <code>std::bind</code> und <code>std::function</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124652</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:41:13 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:41:45 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Burkhi schrieb:</p>
<blockquote>
<p>- Funktionszeiger auf Methoden eines Objekts</p>
</blockquote>
<p>Wenn du Methodenzeiger meinst, die gibts doch schon. Oder meinst du was anderes?</p>
</blockquote>
<p>Er meint Funktionszeiger auf &quot;gebundende&quot; Funktionen -- die also schon mit einem bestimmten Objekt verknüpft sind -- quasi den this-Parameter mit beinhalten.</p>
</blockquote>
<p>Bekommt man das nicht quasi mit <code>std::bind</code> und <code>std::function</code> ?</p>
</blockquote>
<p>Nichts, was man an C-APIs übergeben könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124653</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:41:45 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:48:37 GMT]]></title><description><![CDATA[<p>Burkhi schrieb:</p>
<blockquote>
<p>- Funktionszeiger auf Methoden eines Objekts</p>
</blockquote>
<p>Das wird es nicht geben. C++11 zeigt doch eindeutig, dass variable(?) Funktionen durch Funktionsobjekte ausgedrückt werden, und damit ist das was du brauchst jetzt schon möglich.</p>
<p>Ethon schrieb:</p>
<blockquote>
<p>Nichts, was man an C-APIs übergeben könnte.</p>
</blockquote>
<p>Geht das etwa mit den gebundenen Methodenzeigern aus dem C++-Builder? Würde mich a) wundern und b) stark interessieren, wie die das realisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124657</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:48:37 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 09:53:56 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>3.) &quot;Forward typedef&quot;<br />
Deklariert einen Typen, allerdings können auch typedefs deklariert werden, z.B.:</p>
<pre><code class="language-cpp">typedef std::string;
typedef std::istream;
</code></pre>
</blockquote>
<p>Dazu hab ich <a href="http://www.c-plusplus.net/forum/p2075886#2075886" rel="nofollow">hier</a> mal was geschrieben.</p>
<p>audacia schrieb:</p>
<blockquote>
<p>Reflection.</p>
</blockquote>
<p>Wird eher nicht kommen, siehe z.B. <a href="http://stackoverflow.com/questions/359237/why-does-c-not-have-reflection" rel="nofollow">hier</a>. Aber eine kontrollierte Form der Reflection (z.B. für einzelne Klassenhierarchien) wäre ab und zu schon praktisch.</p>
<p>asc schrieb:</p>
<blockquote>
<p>Ebenso fände ich eine Abkehr von der C-Kompatibilität nicht schlecht, und damit verbunden ein Aufräumen im C++ Standard. Sinnvoll wäre dann natürlich ein Schlüsselwort das Übergänge definiert um mit C kommunizieren zu können (Vergleichbar mit z.B. C# und &quot;unsafe&quot; das Bereichsweise Zeiger zulässt).</p>
</blockquote>
<p>Fände ich auch gut. Nicht das ganze C (Zeiger oder Makros sind z.B. sehr sinnvoll), aber Features wie Variadic Arguments, <code>register</code> , von mir aus auch C-Casts halte ich nicht für nötig. Aber auch C++-Features wie Exceptionspezifikationen, alternative Schlüsselwörter. Oder Teile der Standardbibliothek, wie z.B. <code>std::bind1st()</code> , <code>std::ptr_fun()</code> , <code>std::auto_ptr</code> . Teilweise sind sie ja schon deprecated.</p>
<p>Ethon schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Bekommt man das nicht quasi mit <code>std::bind</code> und <code>std::function</code> ?</p>
</blockquote>
<p>Nichts, was man an C-APIs übergeben könnte.</p>
</blockquote>
<p>Ja gut, aber nur aus diesem Grund würde ich keine Sprachmittel einführen. Viele C-Callback-APIs haben eh einen <code>void* userData</code> -Parameter...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124660</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 28 Sep 2011 09:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 10:18:23 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Was ich mir wünschen würde, und was vermutlich niemals kommt wäre eine ABI-Änderung die zumindest auf dem jeweiligen Betriebsystem Bibliotheken (wie lib/dll unter Windows) direkt ermöglich, die auch vom Compiler unabhängig sind und Klassen etc. über die Schnittstellen hinweg zulassen.</p>
</blockquote>
<p>Nennt sich COM, und gibt es sogar auf Windows, Mac OS X und VMS implementiert!</p>
<p>Muß nur auf weiteren Plattformen implementiert werden und natürlich müssen COM-Objekte bereit gestellt werden. Und schon kann man zumindest auf einer Plattform <em>Compiler-unabhängig</em> OO-APIs nutzen.</p>
<p>MS wird es mit Windows 8 noch weiter treiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124670</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 28 Sep 2011 10:18:23 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 10:41:10 GMT]]></title><description><![CDATA[<p>Aber COM in C++ ist einfach nur fürchterlich. Insofern finde ich die Forderung nach einem einheitlichen ABI auch sinnvoll, wenngleich mindestens so weltfremd wie die Forderung nach Reflection <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Gebundene Funktionszeiger in C++Builder (Stichwort <code>__closure</code> ) können auch nicht an C-APIs übergeben werden. In C++-Code ist <code>bind()</code> eine Alternative, allerdings ist ein <code>__closure</code> deutlich effizienter und kommt ohne zusätzliche Allokationen aus. Der eigentliche Grund für die Einführung des Sprachmittels war aber die Binärkompatibilität zu Delphi. Und mit der Einführung von anonymen Funktionen in Delphi einerseits und Lambda-Funktionen in C++ andererseits werden diese gebundenen Funktionszeiger vermutlich an Bedeutung verlieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124676</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Wed, 28 Sep 2011 10:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 10:58:47 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Was ich mir wünschen würde, und was vermutlich niemals kommt wäre eine ABI-Änderung die zumindest auf dem jeweiligen Betriebsystem Bibliotheken (wie lib/dll unter Windows) direkt ermöglich, die auch vom Compiler unabhängig sind und Klassen etc. über die Schnittstellen hinweg zulassen.</p>
</blockquote>
<p>Nennt sich COM, und gibt es sogar auf Windows, Mac OS X und VMS implementiert!</p>
</blockquote>
<p>Nur ist COM<br />
a) unterschiedlich weit implementiert (OS-bezogen)<br />
b) unschön zu programmieren, lieber wäre mir eine direkte Sprachintegration<br />
c) nicht wirklich konsistent zum restlichen C++ (Betrifft auch dei Sprachintegration)</p>
<p>Artchi schrieb:</p>
<blockquote>
<p>MS wird es mit Windows 8 noch weiter treiben.</p>
</blockquote>
<p>Ja, aber dies ist kein Standard der einfach so mal auf alle OS portiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124684</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 28 Sep 2011 10:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 11:27:57 GMT]]></title><description><![CDATA[<p>Ihr habt mich auf die Idee gebracht, Pseudo-Reflection zu implementieren.<br />
Habe es mal ähnlich wie in Java gemacht: <a href="http://ideone.com/maCfY" rel="nofollow">http://ideone.com/maCfY</a><br />
Offenbar gibts bei Ideone kein boost::any.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124698</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 28 Sep 2011 11:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Eure Wünsche an Sprachfeatures für den nächsten Standard (nach C++11) on Wed, 28 Sep 2011 13:25:11 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Burkhi schrieb:</p>
<blockquote>
<p>- Funktionszeiger auf Methoden eines Objekts</p>
</blockquote>
<p>Wenn du Methodenzeiger meinst, die gibts doch schon. Oder meinst du was anderes?</p>
</blockquote>
<p>Er meint Funktionszeiger auf &quot;gebundende&quot; Funktionen -- die also schon mit einem bestimmten Objekt verknüpft sind -- quasi den this-Parameter mit beinhalten.</p>
</blockquote>
<p>Bekommt man das nicht quasi mit <code>std::bind</code> und <code>std::function</code> ?</p>
</blockquote>
<p>Ja. Allerdings hat ein &quot;gebundener Funktionszeiger&quot; einen Platzvorteil als auch einen Geschwindigkeitsvorteil -- selbst dann, wenn std::function per &quot;small function object optimization&quot; implementiert wird -- also bei kleinen Funktionsobjekten ohne den Freispeicher auskommt.</p>
<p>Das Aufrufen einer Methode über Funktionszeiger und Objektzeiger erfordert ggf ein Pointer-Adjustment und ein vtable-Lookup. Speichert man beide Zeiger als &quot;einen Kombizeiger&quot;, kann man diese Aktionen vorziehen, so dass später die Funktion &quot;direkter&quot; aufgerufen werden kann (ohne vtable-Lookup und ohne Pointer-Adjustment). Zeiger auf Elementfunktionen können dank virtueller Vererbung und solche Scherze schonmal etwas größer ausfallen (sizeof(void*)*3). Speichert man dazu den this-Zeiger, ist man schon bei sizeof(void*)*4, wohingegen ein einfacher &quot;gebundener Funktionszeiger&quot; nur sizeof(void*)*2 groß sein muss.</p>
<p>Für eine Sprache wie C++, die eine &quot;zero overhead&quot;-Sprache sein will, sehe ich das als eine kleine Lücke. Aber die Lücke ist scheinbar nicht groß genug, dass man dafür einen neuen Funktionszeigertypen hat einführen wollen. So etwas wurde zumindest nicht für C++2011 vorgeschlagen. Richtig wichtig finde ich das jetzt auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124741</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 28 Sep 2011 13:25:11 GMT</pubDate></item></channel></rss>