<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Discussions by Jonas_No</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS"></atom:link>
	<image>
		<url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
		<title>Channel 9 - Discussions by Jonas_No</title>
		<link>http://channel9.msdn.com/Niners/Jonas_No/Discussions</link>
	</image>
	<description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
	<link>http://channel9.msdn.com/Niners/Jonas_No/Discussions</link>
	<language>en</language>
	<pubDate>Wed, 22 May 2013 04:48:47 GMT</pubDate>
	<lastBuildDate>Wed, 22 May 2013 04:48:47 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<c9:totalResults>0</c9:totalResults>
	<c9:pageCount>0</c9:pageCount>
	<c9:pageSize>0</c9:pageSize>
	<item>
		<title>Tech Off - Advanced STL topics</title>
		<description><![CDATA[<p>@<a href="/Forums/TechOff/Advanced-STL-topics#c3216945dc31e48f6bc199fb501798b36">Charles</a>: A bit testy are we ? You misunderstand me. I&nbsp;interpreted&nbsp;STL's first message as he had forgotten about the previous requests so i wanted to remind him about them.</p><p>Was i not allowed to do that ?</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Advanced-STL-topics/f27e4e2fbf794046921c9fbb00f82879#f27e4e2fbf794046921c9fbb00f82879</link>
		<pubDate>Fri, 16 Dec 2011 15:03:30 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Advanced-STL-topics/f27e4e2fbf794046921c9fbb00f82879#f27e4e2fbf794046921c9fbb00f82879</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>10</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Site Feedback - c9&#39;s sign Out have never worked ! I&#39;m sick of it</title>
		<description><![CDATA[<p>@<a href="/Forums/Feedback/c9s-sign-Out-have-never-worked--Im-sick-of-it#c8fa106e7201f41139aa19fb6017a0d78">Charles</a>: Hi, I do not use IE (it lacks the flow that firefox and chrome have).</p><p>In this case i'm using chrome official normal release.</p><p>I have learned to check my browser settings and plugins after installing software. Software tend to install plugins and change settings without the users&nbsp;permission.<br>Good example of this is the microsoft's live installer another one is skype.<br>When detected i removed them because they are always buggy and slow down the browser and make it crash. They also tend to spy and leak personal information. Ads love to query these plugins for information.</p><p>Anyway, will you fix this issue soon ? Now that you know it exists.&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/c9s-sign-Out-have-never-worked--Im-sick-of-it/5a1afa6f38c545aab0e09fbb00f59503#5a1afa6f38c545aab0e09fbb00f59503</link>
		<pubDate>Fri, 16 Dec 2011 14:54:08 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/c9s-sign-Out-have-never-worked--Im-sick-of-it/5a1afa6f38c545aab0e09fbb00f59503#5a1afa6f38c545aab0e09fbb00f59503</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>5</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Site Feedback - c9&#39;s sign Out have never worked ! I&#39;m sick of it</title>
		<description><![CDATA[<p>I sign in to make a comment but when i try to sign out it wont work.</p><p>No matter how many times i click the sign out link the page reloads and i still see the sign out link.</p><p>It's been several months why have you not fixed this issue. It's major security problem. I can't sign in on a public computer with the way this is now.</p><p>The workaround &nbsp;that worked <strong>before&nbsp;</strong>was that i went to hotmail.com and signed out from there but not even that works now. What the hell have you done ? Isn't microsoft supposed to be really anal about security ?</p><p>Please fix it once and for all. Better yet provide an alternative to your all-in-one live account system.</p><p>Bit of topic but still relevant:<br>Having everything in one account is convenient for the lazy and non-security&nbsp;conscious&nbsp;people. But when things go wrong and they will like somebody gets hold the account info and gets in.<br>Now you are connecting it to windows login too ?!<br>I'm guessing its for syncing (hyped up but really unstable and crappy &quot;cloud&quot; tech).<br>That's monopoly again. Integrating live account service with windows !<br>Will EU have to tell you it's wrong again ?!</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/c9s-sign-Out-have-never-worked--Im-sick-of-it/26108c3fe913431cb63d9fb4011aef4c#26108c3fe913431cb63d9fb4011aef4c</link>
		<pubDate>Fri, 09 Dec 2011 17:10:08 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/c9s-sign-Out-have-never-worked--Im-sick-of-it/26108c3fe913431cb63d9fb4011aef4c#26108c3fe913431cb63d9fb4011aef4c</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>5</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Advanced STL topics</title>
		<description><![CDATA[<p></p><blockquote><div class="quoteText"><p></p><p><a class="permalink" title="Post Permalink" href="/Forums/TechOff/Advanced-STL-topics/d53a9e198a8c4c5fa0159fac01794c21">Dec 01, 2011 at 11:53&nbsp;PM</a>, <a href="/Niners/STL">STL</a> wrote</p><p>It's very useful to me to see what people are interested in hearing about - thanks for starting this.</p><p></p></div></blockquote><p></p><p>So does that mean you have forgotten or lost the requests in previous video threads / comments?<br>I recall you requesting for what users are&nbsp;interested&nbsp;in and several responded.<br>Perhaps you should consider them before accepting new requests ?<br>You really should go through the comments of the videos, there are some good requests there.&nbsp;</p><p>On advanced stl topics:<br>Not sure how advanced it would be but i'm curious of how you would implement a natural string sort function.</p><p>I've seen many versions and i'm curious of how somebody like you with good&nbsp;knowledge-base of the STL and how to use it correctly would implement such a function.</p><p>Is that too specific of a request ?</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Advanced-STL-topics/4b054d81667a45b7b57a9fb4004eeb3f#4b054d81667a45b7b57a9fb4004eeb3f</link>
		<pubDate>Fri, 09 Dec 2011 04:47:20 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Advanced-STL-topics/4b054d81667a45b7b57a9fb4004eeb3f#4b054d81667a45b7b57a9fb4004eeb3f</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>10</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - templated SendMessage with default values possible ?</title>
		<description><![CDATA[<p>Yet another template battle<br><br>This is what i want but the compiler and the c&#43;&#43;03 standard disagree's with me:<br><pre class="brush: cpp">template &lt;typename WP = WPARAM, typename LP = LPARAM, typename R_TYPE&gt;
R_TYPE SendMessage( __in UINT uMsg, __in WP wParam = 0, __in LP lParam = 0)
{
    return reinterpret_cast&lt;R_TYPE&gt;(::SendMessage(nullptr, uMsg, reinterpret_cast&lt;WPARAM&gt;(wParam), reinterpret_cast&lt;LPARAM&gt;(lParam)));
}</pre>&nbsp;</p><p>&nbsp;</p><p>I want to be able to things like this without those annoying casts all the time:<br><pre class="brush: cpp">SendMessage(1, 1, &quot;test message&quot;);
SendMessage(1, &quot;test message&quot;); // using default 0
SendMessage(1); // using defaults 0, 0</pre>&nbsp;</p><p>&nbsp;</p><p>Is there i trick i don't know about or will the compiler win this template battle too ?<br>C&#43;&#43;11 standard looks promising for this problem but vsNext not so much, to put it in a&nbsp;civilized&nbsp;manner....<br>So can this be done in vs2010 ?&nbsp;</p><p>I'm using vs2010, willing to use mingw-gcc but prefers vc2010.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/templated-SendMessage-with-default-values-possible-/792735d2d78a428eb6419f76004c8150#792735d2d78a428eb6419f76004c8150</link>
		<pubDate>Sat, 08 Oct 2011 04:38:32 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/templated-SendMessage-with-default-values-possible-/792735d2d78a428eb6419f76004c8150#792735d2d78a428eb6419f76004c8150</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>1</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - C++0x (vs2010) question, please tell me what i&#39;m doing wrong</title>
		<description><![CDATA[<p>This makes the warnings go away in vs2010 but g&#43;&#43; is smarter then vs2010 it, lol, and gives an error.</p><p><pre class="brush: cpp">template&lt;typename Functor&gt;
inline scope_guard&lt;Functor&gt; create_scope_guard(const Functor &amp;f) throw()
{
    return scope_guard&lt;Functor&gt;(const_cast&lt;Functor&amp;&gt;(f));
}</pre></p><p><pre class="brush: text">
C:\test&gt;g&#43;&#43; -Wall -Wextra -std=c&#43;&#43;0x -o main.exe test.cpp
test.cpp: In function 'scope_guard&lt;Functor&gt; create_scope_guard(const Functor&amp;) [with Functor = void()]':
test.cpp:100:45:   instantiated from here
test.cpp:85:53: error: invalid use of const_cast with type 'void (&amp;)()', which is a pointer or reference to a function type
test.cpp:86:1: warning: control reaches end of non-void function
</pre></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/7f4f60a5fe6f4c5c864c9f390111d4d5#7f4f60a5fe6f4c5c864c9f390111d4d5</link>
		<pubDate>Mon, 08 Aug 2011 16:36:59 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/7f4f60a5fe6f4c5c864c9f390111d4d5#7f4f60a5fe6f4c5c864c9f390111d4d5</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>34</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - C++0x (vs2010) question, please tell me what i&#39;m doing wrong</title>
		<description><![CDATA[<p><br>Please tell me how bad this code is:</p><p>&nbsp;</p><p><pre class="brush: cpp">template&lt;typename Functor&gt;
class scope_guard {
public:
    explicit scope_guard(Functor &amp;f, false_type) throw()
        : _f(addressof(f))
    {}

    explicit scope_guard(Functor &amp;f, true_type) throw()
        : _f(f)
    {}

    ~scope_guard() throw()

    {
        if( _f != nullptr )
        {
            try
            {
                (*_f)();
            }
            catch(...)
            {
                std::terminate();
            }
        }
    }

    scope_guard(scope_guard&lt;Functor&gt; &amp;&amp;other) throw()
        : _f(other._f)
    {
        other._f = nullptr;
    }

    scope_guard&lt;Functor&gt;&amp; operator=(scope_guard&lt;Functor&gt; &amp;&amp;other) throw()
    {
        if( &amp;other != this )
        {
            _f = other._f;
            other._f == nullptr;
        }
        return *this;
    }
private:
    scope_guard(const scope_guard&lt;Functor&gt;&amp;);
    scope_guard&lt;Functor&gt;&amp; operator=(const scope_guard&lt;Functor&gt;&amp;);

    Functor *_f;
};

template&lt;typename Functor&gt;
inline scope_guard&lt;Functor&gt; create_scope_guard(Functor &amp;f) throw()
{
    return scope_guard&lt;Functor&gt;(f, typename is_function&lt;Functor&gt;::type());
}

inline void noarg_func( void ) {
    cout &lt;&lt; &quot;noarg_func&quot; &lt;&lt; endl;
}
struct noarg_functor {
    inline void operator()( void ) const {
        cout &lt;&lt; &quot;noarg_functor&quot; &lt;&lt; endl;
    }
};

void test() {
    auto guard1 = create_scope_guard([](){cout &lt;&lt; &quot;noarg_lambda&quot; &lt;&lt; endl;});
    auto guard2 = create_scope_guard(noarg_functor());
    auto guard3 = create_scope_guard(noarg_func); // &lt;- Doesn't get inlined
}

int main()
{
    test();
}
</pre></p><p>&nbsp;</p><p>Only problem is that this class use of &quot;&nbsp;C4239: nonstandard extension used ...&quot;<br>which is very bad&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/e482f93441c34e348f2d9f3900d5e2ea#e482f93441c34e348f2d9f3900d5e2ea</link>
		<pubDate>Mon, 08 Aug 2011 12:58:44 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/e482f93441c34e348f2d9f3900d5e2ea#e482f93441c34e348f2d9f3900d5e2ea</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>34</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - C++0x (vs2010) question, please tell me what i&#39;m doing wrong</title>
		<description><![CDATA[<p>@<a href="/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong#cbc876b2596134b2abd9b9f39008e62c4">Sven Groot</a>: Thanks for joining the discussion.</p><p>I remember doing something similar. The problem was the same as in your suggestion.</p><p>It doesn't work for plain functions, in your case it because of &quot;std::addressof&quot;.</p><p>I remember trying to use&nbsp;some template magic, traits, is_function&lt;..&gt;, conditional, enable_if, &nbsp;to make the compiler choose between two version but i failed miserably.</p><p>The compiler just didn't want to play ball. Either it's due to bugs in the compiler or me missing some small detail.</p><p>I just could figure out why it didn't work. Not even g&#43;&#43;'s more helpful error messages helped me.</p><p>About 'Mr Crash' auto in class&nbsp;pseudo&nbsp;code:&nbsp;Would have been sweet if auto worked in classes like that. It would have reduced the pain of some template programming though it would surely cause other problems.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/bcc2af614b264af39f239f3900c9fc6a#bcc2af614b264af39f239f3900c9fc6a</link>
		<pubDate>Mon, 08 Aug 2011 12:15:24 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/bcc2af614b264af39f239f3900c9fc6a#bcc2af614b264af39f239f3900c9fc6a</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>34</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - (STL) move_if algorithm, what&#39;s your take on it ?</title>
		<description><![CDATA[<p>Making move_if support input iterators will make it become &quot;partition_move&quot; or did you have something else in mind ?<br><br>With find_if &nbsp;in move_if it'll be N&#43;1, is that correct ?<br>Since one item is tested twice.&nbsp;</p><p><pre class="brush: cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;sstream&gt;

using namespace std;

template &lt;typename FwdIt, typename OutIt, typename Predicate&gt;
inline FwdIt move_if(FwdIt first, FwdIt last, OutIt out, Predicate pred)
{
    first = find_if(first, last, pred);

    for (auto i = first; i != last; &#43;&#43;i)
    {
        if (pred(*i)) // Should it move it ?
            *out&#43;&#43; = move(*i); // Move it.
        else
            *first&#43;&#43; = move(*i);
    }
    return first;
}

// move_if have become partition_move
template &lt;typename InIt, typename OutIt1, typename OutIt2, typename Predicate&gt;
inline pair&lt;OutIt1, OutIt2&gt; move_if(InIt first, InIt last, OutIt1 out_false, OutIt2 out_true, Predicate pred)
{
    for (auto i = first; i != last; &#43;&#43;i)
    {
        if (pred(*i)) // Should it move it ?
            *out_true&#43;&#43; = move(*i); // Move it.
        else
            *out_false&#43;&#43; = move(*i);
    }
    return make_pair&lt;OutIt1, OutIt2&gt;(out_false, out_true);
}

int main()
{
    auto is_even = [](const char c){return (c % 2) == 0;};

    std::istringstream iss(&quot;The quick brown fox jumps over the lazy dog&quot;);
    std::istream_iterator&lt;char&gt; begi(iss), endi;

    vector&lt;char&gt; n_f, n_t;
    move_if(begi, endi, back_inserter(n_f), back_inserter(n_t), is_even);

    auto print_vec_char = [](const vector&lt;char&gt; &amp;v) {
        cout &lt;&lt; &quot;[&quot; &lt;&lt; v.size() &lt;&lt; &quot;]&quot;;
        for_each(v.cbegin(), v.cend(), [](const char c) {
            cout &lt;&lt; &quot; &quot; &lt;&lt; c;
        });
        cout &lt;&lt; endl;
    };
    
    print_vec_char(n_f);
    print_vec_char(n_t);
}

/* Output:
[19] e q u i c k o w o u m s o e e a y o g
[16] T h b r n f x j p v r t h l z d
*/
</pre></p><p>&nbsp;</p><p>&gt;&nbsp;I was assuming that the whole source range would be discarded.</p><p>&nbsp;How would you do it if the source range would be used ?</p><p>&nbsp;</p><p>I a pedant so making my code as efficient as possible is a goal.</p><p>Using move_if is more efficient because you need one less container and if you really needed to preserve the input container then partition_copy would do the trick.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/7b98a38b9136428697d59f3800415573#7b98a38b9136428697d59f3800415573</link>
		<pubDate>Sun, 07 Aug 2011 03:57:52 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/7b98a38b9136428697d59f3800415573#7b98a38b9136428697d59f3800415573</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>8</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - String length position prioritization with fuzzy grouping (levenshtein distance) using STL</title>
		<description><![CDATA[<p>When people name files they usually name files based on importance with the most important thing first, like the example i provided: &quot;Name - part number - codec/quality type&quot; etc..</p><p>Yes it's fuzzy but can be controlled for example with filters or other algorithms.</p><p>&quot;is itself&nbsp;<em>fuzzy</em>: what are you actually trying to do here?&quot;</p><p>Group files in a more human way.</p><p>Mostly its for fun because i will learn something new also want to see if its even possible.</p><p>I'm having a hard time finding the right algorithm for the job. There's not really a list of algorithm you can search through for the right one. Turning math formulas into code isn't easy, its&nbsp;actually&nbsp;hard.</p><p>So i'm asking for help. Hoping someone here knows something about this subject.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/String-length-position-prioritization-with-fuzzy-grouping-levenshtein-distance-using-STL/666d0ce2509b4d9eacea9f380022edfc#666d0ce2509b4d9eacea9f380022edfc</link>
		<pubDate>Sun, 07 Aug 2011 02:07:10 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/String-length-position-prioritization-with-fuzzy-grouping-levenshtein-distance-using-STL/666d0ce2509b4d9eacea9f380022edfc#666d0ce2509b4d9eacea9f380022edfc</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>3</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - String length position prioritization with fuzzy grouping (levenshtein distance) using STL</title>
		<description><![CDATA[<p>I'm searching for an algorithm that can efficiently prioritize substring matches based on how close to the beginning of the string it is.<br><br>Example:<br>string 1: &quot;BBC Stargazing Live 2of3 1024p HDTV&quot;<br>string 2:&nbsp;&quot;BBC Stargazing Live 3of3 1024p HDTV&quot;<br><br>These strings can either be put in the &quot;1024p&quot;, &quot;HDTV&quot; or &quot;BBC Stargazing Live&quot; group. Not in all three.<br><br>Putting them in the group &quot;BBC Stargazing Live&quot; would be more useful then the other two.<br>So by prioritizing substring matches based on their position in the&nbsp;string would solve this but how in the world do i do it ?</p><p>Here's the example code i'm playing with: (Credits for the code goes to Mr&nbsp;Stephan T Lavavej, thank you again !)</p><p><pre class="brush: cpp">#include &lt;stddef.h&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;
#include &lt;numeric&gt;
#include &lt;vector&gt;
using namespace std;

// &lt;a href=&quot;<a href="http://en.wikipedia.org/wiki/Levenshtein_distance&quot;>http://en.wikipedia.org/wiki/Levenshtein_distance&lt;/a>">http&#58;&#47;&#47;en.wikipedia.org&#47;wiki&#47;Levenshtein_distance&#34;&#62;http&#58;&#47;&#47;en.wikipedia.org&#47;wiki&#47;Levenshtein_distance&#60;&#47;a&#62;</a>
template &lt;typename FwdIt1, typename FwdIt2&gt; size_t levenshtein_distance(
    FwdIt1 first1, FwdIt1 last1, FwdIt2 first2, FwdIt2 last2) {

    const size_t size1 = distance(first1, last1);
    const size_t size2 = distance(first2, last2);

    if (size1 &gt; size2) {
        return levenshtein_distance(first2, last2, first1, last1);
    }

    vector&lt;size_t&gt; prev(size1 &#43; 1);
    vector&lt;size_t&gt; curr(size1 &#43; 1);

    iota(curr.begin(), curr.end(), 0);

    FwdIt2 iter2 = first2;

    for (size_t j = 0; j &lt; size2; &#43;&#43;j, &#43;&#43;iter2) {
        prev.swap(curr);

        curr[0] = j &#43; 1;

        FwdIt1 iter1 = first1;

        for (size_t i = 0; i &lt; size1; &#43;&#43;i, &#43;&#43;iter1) {
            if (*iter1 == *iter2) {
                curr[i &#43; 1] = prev[i];
            } else {
                curr[i &#43; 1] = min(curr[i], min(prev[i &#43; 1], prev[i])) &#43; 1;
            }
        }
    }

    return curr.back();
}

#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;ostream&gt;
#include &lt;regex&gt;
#include &lt;set&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

struct size_greater {
    template &lt;typename T&gt; bool operator()(const T&amp; a, const T&amp; b) const {
        return a.size() &gt; b.size();
    }
};

vector&lt;vector&lt;string&gt;&gt; fuzzy_grouping(const vector&lt;string&gt;&amp; v) {
    multiset&lt;string, size_greater&gt; s(v.begin(), v.end());

    vector&lt;vector&lt;string&gt;&gt; ret;

    while (!s.empty()) {
        string primary = *s.begin();
        s.erase(s.begin());

        ret.push_back(vector&lt;string&gt;());
        ret.back().push_back(primary);

        const size_t similar = max(static_cast&lt;size_t&gt;(1), primary.size() / 2);

        for (auto i = s.begin(); i != s.end(); ) {
            if (levenshtein_distance(primary.begin(), primary.end(), i-&gt;begin(), i-&gt;end()) &lt;= similar) {
                ret.back().push_back(*i);
                s.erase(i&#43;&#43;);
            } else {
                &#43;&#43;i;
            }
        }
    }

    return ret;
}

int main() {
    const regex r(&quot;\\w&#43;&quot;);

    vector&lt;string&gt; v;

    for (string s; getline(cin, s); ) {
        v.insert(v.end(), sregex_token_iterator(s.begin(), s.end(), r), sregex_token_iterator());
    }

    vector&lt;vector&lt;string&gt;&gt; groups = fuzzy_grouping(v);

    for (auto i = groups.cbegin(); i != groups.cend(); &#43;&#43;i) {
        for (auto k = i-&gt;begin(); k != i-&gt;end(); &#43;&#43;k) {
            cout &lt;&lt; *k &lt;&lt; &quot; &quot;;
        }

        cout &lt;&lt; endl;
    }
}
</pre></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/String-length-position-prioritization-with-fuzzy-grouping-levenshtein-distance-using-STL/236f3752e9354b5895e99f3501634cf4#236f3752e9354b5895e99f3501634cf4</link>
		<pubDate>Thu, 04 Aug 2011 21:33:36 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/String-length-position-prioritization-with-fuzzy-grouping-levenshtein-distance-using-STL/236f3752e9354b5895e99f3501634cf4#236f3752e9354b5895e99f3501634cf4</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>3</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - (STL) move_if algorithm, what&#39;s your take on it ?</title>
		<description><![CDATA[<p><pre>Sometimes i do trust the compiler a bit too much thinking its smart enough to</pre><pre>understand what i'm doing when it can be really stupid and stubborn sometimes.<br><br>Here's version 3:<br><br><pre class="brush: cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;

using namespace std;

template &lt;typename FwdIt, typename OutIt, typename Predicate&gt;
inline FwdIt move_if(FwdIt first, FwdIt last, OutIt out, Predicate pred)
{
    first = find_if(first, last, pred);
    if (first == last)
        return first; // Nothing to move.

    for (auto i = first; i != last; &#43;&#43;i)
    {
        if (pred(*i)) // Should it move it ?
            *out&#43;&#43; = move(*i); // Move it.
        else
            *first&#43;&#43; = move(*i);
    }
    return first;
}

int main()
{
    vector&lt;int&gt; v(10);
    generate(v.begin(), v.end(), [] () -&gt; int {
        static size_t i = 1;
        return i&#43;&#43; * 11;
    });

    auto is_even = [](const int i){return (i % 2)==0;};
    
    //const size_t size = count_if(v.cbegin(), v.cend(), is_even);
    //vector&lt;int&gt; n(size);
    //auto new_end = move_if(v.begin(), v.end(), n.begin(), is_even);

    // This is slower then the code above when 'vector&lt;int&gt; v(10000);'
    // Naively timed test only using QueryPerformanceCounter
    // Is this what you meant ?
    vector&lt;int&gt; n;
    n.reserve(v.size());
    auto new_end = move_if(v.begin(), v.end(), back_inserter(n), is_even);

    v.erase(new_end, v.end());

    auto print_vec_int = [](const vector&lt;int&gt; &amp;v) {
        cout &lt;&lt; &quot;[&quot; &lt;&lt; v.size() &lt;&lt; &quot;]&quot;;
        for_each(v.cbegin(), v.cend(), [](const int i) {
            cout &lt;&lt; &quot; &quot; &lt;&lt; i;
        });
        cout &lt;&lt; endl;
    };

    print_vec_int(v);
    print_vec_int(n);
}

/* Output:
[5] 11 33 55 77 99
[5] 22 44 66 88 110
*/</pre><br><br><br>When ever i see 'back_inserter' i think of performance loss. Is that incorrect ?<br><br>What do you think about that 'find_if' &quot;optimization&quot; ?<br><br>5. I know its bad to write code when tired but coding just flows when tired. Oh the dilemma  <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-7.gif?v=c9' alt='Perplexed' /><br><br>6. Nice catch. Btw how big of an issue is that ? Cant the compiler optimize that away ?<br><br>7. I'm not used to doing that kind of math but i understand what you mean.</pre><pre>Naively i just run a few tests and see which runs the fastest.<br>The only goal i have is to make it a performant and correct as possible.</pre><pre>Learning something new in the process is always fun too.<br>&quot;reallocation overhead (which usually isn't a big deal)&quot;<br>That surprised me a bit. Isn't (&amp;&amp;) and std::move's main reason for existing just<br>because of reducing reallocation overhead ?</pre><pre>Now i'm a bit confused. When writing algorithms shouldn't you have reallocation<br>overhead in mind or are there some simple guidelines you can follow  ?<br><br>8. See code, please.</pre><pre><br>9. I wasn't really concentrating on optimizing the debug print code but i would have<br>changed it eventually anyway.<br>Performance issues bug me until i fix them.<br><br>10. But it will not hurt performance right or is it bad in some way ?<br><br>&quot;Yes, that was intentional.&quot;<br>Explain more, please. Explain your thinking.<br>If the algorithm didnt clean up after itself then the programer would need to do extra work<br> Good example here would be 'remove_if' algorithm<br>Also it would leave the input container in a less performant state.<br>That is using it as is would eat extra cpu cycles.</pre><pre>&nbsp;</pre><pre>How big of an issue is it really that move_if use forward iterators ?</pre><pre>&nbsp;</pre><pre>I'm beginning to understand the many decisions you must be making working on the STL<br>for every single function. Your C&#43;&#43; kung fu must indeed be strong ;)<br>How do you know&nbsp;when to stop: optimizing / correction cleaning and move on to the next thing ?</pre></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/47186b0afb0f4c6d98179f340144ded3#47186b0afb0f4c6d98179f340144ded3</link>
		<pubDate>Wed, 03 Aug 2011 19:42:49 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/47186b0afb0f4c6d98179f340144ded3#47186b0afb0f4c6d98179f340144ded3</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>8</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - C++0x (vs2010) question, please tell me what i&#39;m doing wrong</title>
		<description><![CDATA[<p>Here's how STL would do it:<br><a href="http://channel9.msdn.com/Shows/Going&#43;Deep/C9-Lectures-Stephan-T-Lavavej-Advanced-STL-6-of-n#c634477472460000000">http://channel9.msdn.com/Shows/Going&#43;Deep/C9-Lectures-Stephan-T-Lavavej-Advanced-STL-6-of-n#c634477472460000000</a></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/dcb8826e776e422db9229f3300dc3489#dcb8826e776e422db9229f3300dc3489</link>
		<pubDate>Tue, 02 Aug 2011 13:21:44 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/dcb8826e776e422db9229f3300dc3489#dcb8826e776e422db9229f3300dc3489</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>34</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - (STL) move_if algorithm, what&#39;s your take on it ?</title>
		<description><![CDATA[<p>Good points.</p><p>1. I'm not sure what the difference is between&nbsp;forward iterators and input iterators.<br>Isn't forward iterator the most generic iterator ? I'll have to&nbsp;refresh&nbsp;my c&#43;&#43; knowledge.</p><p>2. Yes, it did feel wrong using a container. Using a container is less general too. Now when i think about it, i should have gone for the more general way.</p><p>2 and 3: At the time i was thinking that the programmer would usually alloc up a new&nbsp;container&nbsp;with the needed size anyway so why not do it in the function. But yes it does limit its&nbsp;usability.</p><p>4. What do you mean ?&nbsp;<br>move_if reuses the input iterator which results in more&nbsp;efficiency then&nbsp;partition_copy.<br>I based move_if on how remove_if works.</p><p><br>Here's version 2 - how move_if should have been in the first place</p><p><pre class="brush: cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;

using namespace std;

template &lt;typename InputIt, typename OutIt, typename Predicate&gt;
inline InputIt move_if(InputIt first, InputIt last, OutIt out, Predicate pred)
{
    if (first == last)
        return last; // Empty so nothing to move
    InputIt new_end = first;
    for (auto i = first; i != last; &#43;&#43;i)
    {
        if (pred(*i)) // Should it move it ?
            *out&#43;&#43; = move(*i);
        else
            *new_end&#43;&#43; = move(*i);
    }
    return new_end;
}

int main()
{
    vector&lt;int&gt; v(10);
    generate(v.begin(), v.end(), [] () -&gt; int {
        static size_t i = 1;
        return i&#43;&#43; * 11;
    });

    auto is_prime = [](int i){return (i % 2)==0;};
    const size_t size = count_if(v.cbegin(), v.cend(), is_prime);
    vector&lt;int&gt; n(size);
    auto new_end = move_if(v.begin(), v.end(), n.begin(), is_prime);
    v.erase(new_end, v.end());

    auto print_vec_int = [](vector&lt;int&gt; v) {
        cout &lt;&lt; &quot;[&quot; &lt;&lt; v.size() &lt;&lt; &quot;]&quot;;
        for_each(v.cbegin(), v.cend(), [](const int &amp;i) {
            cout &lt;&lt; &quot; &quot; &lt;&lt; i;
        });
        cout &lt;&lt; endl;

    };

    print_vec_int(v);
    print_vec_int(n);
}

/* Output:
[5] 11 33 55 77 99
[5] 22 44 66 88 110
*/
</pre></p><p>&nbsp;</p><p>Your suggestion of using&nbsp;make_move_iterator() with copy_if() while the moving works it doesn't fix up the input container.<br><pre class="brush: cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;

using namespace std;

int main()
{
    vector&lt;int&gt; v(10);
    generate(v.begin(), v.end(), [] () -&gt; int {
        static size_t i = 1;
        return i&#43;&#43; * 11;
    });

    auto is_prime = [](int i){return (i % 2)==0;};
    const size_t size = count_if(v.cbegin(), v.cend(), is_prime);
    vector&lt;int&gt; n(size);
    copy_if(make_move_iterator(v.begin()), make_move_iterator(v.end()), n.begin(), is_prime);

    auto print_vec_int = [](vector&lt;int&gt; v) {
        cout &lt;&lt; &quot;[&quot; &lt;&lt; v.size() &lt;&lt; &quot;]&quot;;
        for_each(v.cbegin(), v.cend(), [](const int &amp;i) {
            cout &lt;&lt; &quot; &quot; &lt;&lt; i;
        });
        cout &lt;&lt; endl;

    };

    print_vec_int(v);
    print_vec_int(n);
}

/* Output:
[10] 11 22 33 44 55 66 77 88 99 110
[5] 22 44 66 88 110
*/
</pre>&nbsp;</p><p>Using your example code (slightly modified):<br><pre class="brush: cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;

using namespace std;

int main()
{
    vector&lt;string&gt; dst;

    {
        vector&lt;string&gt; src;

        src.push_back(&quot;The Motion Picture&quot;);
        src.push_back(&quot;The Wrath Of Khan&quot;);
        src.push_back(&quot;The Search For Spock&quot;);
        src.push_back(&quot;The Voyage Home&quot;);
        src.push_back(&quot;The Final Frontier&quot;);
        src.push_back(&quot;The Undiscovered Country&quot;);
        src.push_back(&quot;Generations&quot;);
        src.push_back(&quot;First Contact&quot;);
        src.push_back(&quot;Insurrection&quot;);
        src.push_back(&quot;Nemesis&quot;);
        src.push_back(&quot;Star Trek&quot;);

        copy_if(
            make_move_iterator(src.begin()),
            make_move_iterator(src.end()),
            back_inserter(dst),
            [](const string&amp; s) {
                return s != &quot;The Final Frontier&quot;;
        });

        for (auto i = src.begin(); i != src.end(); &#43;&#43;i) {
            cout &lt;&lt; &quot;\&quot;&quot; &lt;&lt; *i &lt;&lt; &quot;\&quot;&quot;&lt;&lt; endl;
        }
    }

    cout &lt;&lt; endl;

    for (auto i = dst.begin(); i != dst.end(); &#43;&#43;i) {
        cout &lt;&lt; &quot;\&quot;&quot; &lt;&lt; *i &lt;&lt; &quot;\&quot;&quot;&lt;&lt; endl;
    }
}

/* Output:
&quot;&quot;
&quot;&quot;
&quot;&quot;
&quot;&quot;
&quot;The Final Frontier&quot;
&quot;&quot;
&quot;&quot;
&quot;&quot;
&quot;&quot;
&quot;&quot;
&quot;&quot;

&quot;The Motion Picture&quot;
&quot;The Wrath Of Khan&quot;
&quot;The Search For Spock&quot;
&quot;The Voyage Home&quot;
&quot;The Undiscovered Country&quot;
&quot;Generations&quot;
&quot;First Contact&quot;
&quot;Insurrection&quot;
&quot;Nemesis&quot;
&quot;Star Trek&quot;

*/
</pre>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/422c635d99624ee1adc79f3300d99e7b#422c635d99624ee1adc79f3300d99e7b</link>
		<pubDate>Tue, 02 Aug 2011 13:12:19 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/422c635d99624ee1adc79f3300d99e7b#422c635d99624ee1adc79f3300d99e7b</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>8</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - C++0x (vs2010) question, please tell me what i&#39;m doing wrong</title>
		<description><![CDATA[<p>@<a href="/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong#cd701fa097b8c4289b5519f2c0059162a">Dexter</a>: The code in my post was just an example of compiler optimization. How a good template class should work.</p><p>Both your code and&nbsp;Burkholder's code have a big overhead.<br>Is there a way to minimize the overhead like in my example ?&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/b17d6d3c8717452a9ee99f2c00ed7f0a#b17d6d3c8717452a9ee99f2c00ed7f0a</link>
		<pubDate>Tue, 26 Jul 2011 14:24:41 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/b17d6d3c8717452a9ee99f2c00ed7f0a#b17d6d3c8717452a9ee99f2c00ed7f0a</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>34</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - C++0x (vs2010) question, please tell me what i&#39;m doing wrong</title>
		<description><![CDATA[<p>Interesting topic.<br>But the code examples above will generate a lot of overhead for the small tasks it seems to be for. For example using it as a scoped_array.<br>Best would be if you could make the optimizer inline , etc..<br>Make the compiler do the heavy work for us.</p><p>Like this little&nbsp;code example:<br><pre class="brush: cpp">inline void normal_function(int v) {
    cout &lt;&lt; &quot;normal_function: &quot; &lt;&lt; v &lt;&lt; endl;
}

template &lt;typename Function&gt;
class sop {
    Function f_;
public:
    sop(Function fun) : f_(fun) {}
    ~sop() {
        f_();
    }
};

void t_sop()
{
    auto l = [](){
        normal_function(123);
    };
    sop&lt;decltype(l)&gt; s(l);
}

int main()
{
    t_sop();
    return 0;
}</pre>&nbsp;</p><p>&nbsp;</p><p>Generated code in win32 release mode:<br><pre class="brush: text">    t_sop();
00291000  mov         eax,dword ptr [__imp_std::endl (292044h)]  
00291005  mov         ecx,dword ptr [__imp_std::cout (292068h)]  
0029100B  push        eax  
0029100C  push        7Bh  
0029100E  push        offset string &quot;normal_function: &quot; (292114h)  
00291013  push        ecx  
00291014  call        std::operator&lt;&lt;&lt;std::char_traits&lt;char&gt; &gt; (2910F0h)  
00291019  add         esp,8  
0029101C  mov         ecx,eax  
0029101E  call        dword ptr [__imp_std::basic_ostream&lt;char,std::char_traits&lt;char&gt; &gt;::operator&lt;&lt; (292050h)]  
00291024  mov         ecx,eax  
00291026  call        dword ptr [__imp_std::basic_ostream&lt;char,std::char_traits&lt;char&gt; &gt;::operator&lt;&lt; (29204Ch)]  
</pre></p><p><br>Shouldn't you be able to&nbsp;achieve&nbsp;this with the power of c&#43;&#43;0x but without this big overhead ?</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/e966f45825ac42639c789f2c001fb8e1#e966f45825ac42639c789f2c001fb8e1</link>
		<pubDate>Tue, 26 Jul 2011 01:55:29 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/C0x-vs2010-question-please-tell-me-what-im-doing-wrong/e966f45825ac42639c789f2c001fb8e1#e966f45825ac42639c789f2c001fb8e1</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>34</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - (STL) move_if algorithm, what&#39;s your take on it ?</title>
		<description><![CDATA[<p>There's no&nbsp;move_if algorithm so i wrote one.</p><p>What's your opinion of it (improvements, bugs, etc...) ?</p><p><pre class="brush: cpp">template &lt;typename FwdIt, typename Container, typename Predicate&gt;
inline FwdIt move_if(FwdIt first, FwdIt last, Container &amp;cont, Predicate pred)
{
    if (first == last)
        return last; // Empty so nothing to move
    const size_t size = count_if(first, last, pred);
    if (size == 0)
        return last; // Nothing to move
    cont.resize(size);
    FwdIt new_end = first;
    auto c = cont.begin();
    for (auto i = first; i != last; &#43;&#43;i)
    {
        if (pred(*i)) // Should it move it ?
            *c&#43;&#43; = move(*i);
        else
            *new_end&#43;&#43; = move(*i);
    }
    return new_end;
}</pre></p><p>How you use it:<br><pre class="brush: cpp">int main()
{
    vector&lt;int&gt; v(10);
    generate(v.begin(), v.end(), [] () -&gt; int {
        static size_t i = 1;
        return i&#43;&#43; * 11;
    });

    vector&lt;int&gt; n;
    auto new_end = move_if(v.begin(), v.end(), n, [](int i){return (i % 2)==0;});
    v.erase(new_end, v.end());

    auto print_vec_int = [](vector&lt;int&gt; v) {
        cout &lt;&lt; &quot;[&quot; &lt;&lt; v.size() &lt;&lt; &quot;]&quot;;
        for_each(v.cbegin(), v.cend(), [](const int &amp;i) {
            cout &lt;&lt; &quot; &quot; &lt;&lt; i;
        });
        cout &lt;&lt; endl;

    };

    print_vec_int(v);
    print_vec_int(n);
}
/* Output:
[5] 11 33 55 77 99
[5] 22 44 66 88 110
*/</pre>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/fedcf4efb07841969c629f2400406faf#fedcf4efb07841969c629f2400406faf</link>
		<pubDate>Mon, 18 Jul 2011 03:54:36 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/STL-moveif-algorithm-whats-your-take-on-it-/fedcf4efb07841969c629f2400406faf#fedcf4efb07841969c629f2400406faf</guid>
		<dc:creator>Jonas_No</dc:creator>
		<slash:comments>8</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Jonas_No/Discussions/RSS</wfw:commentRss>
	</item>
</channel>
</rss>