<?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[auto und Zugriff auf typedef]]></title><description><![CDATA[<p>Hi,</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
using namespace std;

vector&lt;int&gt; getVec() { return {}; }

int main()
{
	auto vec = getVec();

	for_each(begin(vec), end(vec), [](decltype(vec)::value_type &amp;v){});
}
</code></pre>
<p>mir ist decltype(vec) zu lang, gibts da keine schöne Abkürzung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311935/auto-und-zugriff-auf-typedef</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 03:49:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311935.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Dec 2012 20:19:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Tue, 18 Dec 2012 20:19:37 GMT]]></title><description><![CDATA[<p>Hi,</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
using namespace std;

vector&lt;int&gt; getVec() { return {}; }

int main()
{
	auto vec = getVec();

	for_each(begin(vec), end(vec), [](decltype(vec)::value_type &amp;v){});
}
</code></pre>
<p>mir ist decltype(vec) zu lang, gibts da keine schöne Abkürzung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2281314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2281314</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 18 Dec 2012 20:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Tue, 18 Dec 2012 20:29:33 GMT]]></title><description><![CDATA[<blockquote>
<p>mir ist decltype(vec) zu lang, gibts da keine schöne Abkürzung?</p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2281319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2281319</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 18 Dec 2012 20:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Tue, 18 Dec 2012 20:36:05 GMT]]></title><description><![CDATA[<p>Naja, du kannst es so schreiben:</p>
<pre><code>decltype(vec[0])
</code></pre>
<p>(ungetestet! ginge ja, falls nicht mit Indexop., auch mit <code>at</code> )<br />
:xmas2:<br />
Aber das <code>decltype(vec)</code> kannst du damit eben nicht verkürzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2281320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2281320</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 18 Dec 2012 20:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Tue, 18 Dec 2012 20:45:06 GMT]]></title><description><![CDATA[<p>Ja stimmt, ganz vergessen. Der statische Typ von vec[0] steht ja dann schon fest. Würde es template lambdas geben, könnte ich nur T hinschreiben und auch sowas schönes machen:</p>
<pre><code>#include &lt;list&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
using namespace std;

list&lt;int&gt; getList() { return {}; }
vector&lt;int&gt; getVec() { return {}; }

int main()
{
	auto vec = getVec();
	auto lis = getList();

	auto func = [](auto &amp;v) { };

	for_each(begin(vec), end(vec), func(decltype(vec)::value_type));
	for_each(begin(vec), end(vec), func(decltype(lis)::value_type));
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2281326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2281326</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 18 Dec 2012 20:45:06 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Tue, 18 Dec 2012 20:48:44 GMT]]></title><description><![CDATA[<p>So waere es mir viel lieber:</p>
<pre><code>auto func = []&lt;T&gt;(T &amp;v) { };

for_each(begin(vec), end(vec), func&lt;decltype(vec)::value_type&gt;);
for_each(begin(vec), end(vec), func&lt;decltype(lis)::value_type&gt;);
</code></pre>
<p>Edit: oder eben kürzer:</p>
<pre><code>// klappt auch wenn keine element drin ist, da statischer Typ angeschaut wird
for_each(begin(vec), end(vec), func&lt;decltype(vec[0])&gt;);
for_each(begin(vec), end(vec), func&lt;decltype(lis[0])&gt;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2281327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2281327</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 18 Dec 2012 20:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Tue, 18 Dec 2012 20:48:29 GMT]]></title><description><![CDATA[<p>Es gibt leider noch keine polymorphic lambdas. <a href="http://cpp-next.com/archive/2011/12/a-breakthrough-for-concepts/" rel="nofollow">Link 1</a> <a href="http://cpp-next.com/archive/2011/11/having-it-all-pythy-syntax/" rel="nofollow">Link 2</a><br />
In den Links wird unter anderem erklärt, was das Problem an</p>
<pre><code class="language-cpp">std::transform(first, last, result, [](x){return x*2;});
</code></pre>
<p>ist.</p>
<p>decltype ist übrigens etwas kritisch, bei Identifiern, weil da noch Referenzen und dabei sein könnten. Besser wäre hier</p>
<pre><code class="language-cpp">iterator_traits&lt;decltype(begin(vec))&gt;::value_type
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2281328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2281328</guid><dc:creator><![CDATA[deck]]></dc:creator><pubDate>Tue, 18 Dec 2012 20:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Thu, 20 Dec 2012 21:25:42 GMT]]></title><description><![CDATA[<p>Danke für die Links. Ich glaub', ich implementiere mal das ganze auch in Clang:</p>
<pre><code>auto func = []&lt;T&gt;(T &amp;v) { }; 

for_each(begin(vec), end(vec), func&lt;int&gt;); 
for_each(begin(vec), end(vec), func&lt;char&gt;);
</code></pre>
<p>wird nach einer source-to-source transformation zu:</p>
<pre><code>auto func_int = [](int &amp;v) { }; 
auto func_char = [](char &amp;v) { };

for_each(begin(vec), end(vec), func_int); 
for_each(begin(vec), end(vec), func_char);
</code></pre>
<p>Sollte doch gehen, oder? Müsste nur aufpassen, dass der Bezeichner func_int/char nicht schon im Programm exisitiert. Ist ja aber erstmal egal, oder ich waehle halt kryptische Namen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282076</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Dec 2012 21:25:42 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Thu, 20 Dec 2012 21:38:00 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Sollte doch gehen, oder?</p>
</blockquote>
<p>Das Lambda wird ja zu einem Archetype. Ich würde bevorzugen, dass</p>
<pre><code class="language-cpp">auto func = [](auto&amp; v) { };

for_each(begin(vec), end(vec), func);
for_each(begin(vec), end(vec), func);
</code></pre>
<p>zu</p>
<pre><code class="language-cpp">struct __lambda_func // reservierter Bezeichner, muss frei sein
{
    template &lt;class T&gt; void operator()(T x) { }
};

auto func = __lambda_func{};

for_each(begin(vec), end(vec), func);
for_each(begin(vec), end(vec), func);
</code></pre>
<p>wird. Das ist schöner und wahrscheinlich näher an den polymorphic Lambdas in C++42 dran.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282078</guid><dc:creator><![CDATA[deck]]></dc:creator><pubDate>Thu, 20 Dec 2012 21:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Thu, 20 Dec 2012 22:16:41 GMT]]></title><description><![CDATA[<p>Jep, akzeptiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282082</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Dec 2012 22:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to auto und Zugriff auf typedef on Fri, 21 Dec 2012 14:22:52 GMT]]></title><description><![CDATA[<p>Da ist dir gestern jemand zuvorgekommen:<br />
<a href="http://faisalv.github.com/clang-glambda/" rel="nofollow">http://faisalv.github.com/clang-glambda/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282242</guid><dc:creator><![CDATA[deck]]></dc:creator><pubDate>Fri, 21 Dec 2012 14:22:52 GMT</pubDate></item></channel></rss>