<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" version="2.0">
  <channel>
    <title>Clearspace Server Syndication Feed</title>
    <link>http://www-949.ibm.com/software/rational/cafe/blogs</link>
    <description>A syndication feed of all the blogs on this system</description>
    <pubDate>Thu, 06 Aug 2009 16:54:35 GMT</pubDate>
    <generator>Clearspace 1.10.7 (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2009-08-06T16:54:35Z</dc:date>
    <item>
      <title>Draft Specification of Transactional Language Constructs for C++</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/11/11/draft-specification-of-transactional-language-constructs-for-c</link>
      <description>Hello all, over the last year, a group of Transactional Memory experts from Sun, Intel, and IBM have been getting together every Friday to discuss how to create a uniform syntax for Transactional Memory.&lt;br /&gt;
&lt;br /&gt;
We are happy to release the first version of the Draft Specification of Transactional Language Constructs for C++. This specification is the result of a joint work by a group of people from Intel, IBM and Sun, and is based on our experience working with transactional language constructs. We would like to encourage people to implement this specification and we welcome feedback on the document. Please direct any such feedback to this discussion group &lt;a class="jive-link-external" href="http://groups.google.com/group/tm-languages"&gt;TM &amp;#38; Languages&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
You can find the specification in the Resource Library/Articles, Presentation, Ebooks under the &lt;a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/docs/DOC-2607"&gt;Parallel Section&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you have any comments, I invite you to post them here or in the Discussion forum.&lt;br /&gt;
&lt;br /&gt;
TM Specification Drafting Group</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">transacational</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">memory</category>
      <pubDate>Thu, 06 Aug 2009 16:54:35 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/11/11/draft-specification-of-transactional-language-constructs-for-c</guid>
      <dc:date>2009-08-06T16:54:35Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/comment/draft-specification-of-transactional-language-constructs-for-c</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/feeds/comments?blogPostID=1230</wfw:commentRss>
    </item>
    <item>
      <title>To derprecate or not deprecate, that is the question.</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/11/06/to-derprecate-or-not-deprecate-that-is-the-question</link>
      <description>Standards love to add things. They remove very little, but they do like to deprecate. This post will describe a collection of things that is heading that way, or not heading that way in C++ 0x.&lt;br /&gt;
&lt;br /&gt;
In my posting on &lt;a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/06/03/intention-to-deprecate-trigraphs-in-the-next-c-standard"&gt;Intention to deprecate trigraphs in the next C++ Standard&lt;/a&gt;, we successfully demonstrated that much of the non-English speaking world will still need to rely on trigraphs as a way to get to UCN through "\" which may be inaccessible in some codepages. So we would object to deprecating it without an alternative. &lt;br /&gt;
&lt;br /&gt;
In the last meeting in Santa Cruz, an alternative was proposed in &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2978.pdf"&gt;Core issue 789:Replacing Trigraphs&lt;/a&gt;. In short, it does not so much deprecate trigraphs (which we like) as move trigraphs out of translation phase 1 so trigraphs are not recognized ahead of raw strings, but is still recognized ahead of other strings (as it is now). It seems that trigraph interaction with raw strings was always the real issue behind the original National Body comment. This interaction had become more prevalent because Raw strings are accepted as part of C++0x. This proposal will level the playing field to what it was again.&lt;br /&gt;
&lt;br /&gt;
We reviewed the paper as a way of fixing the interaction of trigraphs and raw strings. We think the paper is ready to go, but we're holding it back because we're considering other approaches, including moving UCNs out of translation phase 1 or moving raw string recognition into phase 1. &lt;br /&gt;
&lt;br /&gt;
We're still looking at deprecating exception specifications. Our current feeling is that we will deprecate them except for the ways of saying a function doesn't throw at all (e.g., the new noexcept feature, still being reviewed). This feature has been shown to be relatively useless since its inception.&lt;br /&gt;
&lt;br /&gt;
We did a straw poll on deprecating or removing exported templates. I voted to support removal of export to reduce dialecting C++. However a straw poll in full committee seems to prefer deprecation. This feature has been implemented exactly by one company, and even their lead is not opposing its removal. We appreciate their selfless sense of the C++ community and appreciate their sacrifice in learning about why this feature was problematic. Sometimes, it does take doing to see the whole picture.&lt;br /&gt;
&lt;br /&gt;
Finally, we deprecated the semantics of the register keyword. This keyword has been ignored by most compiler that I am aware of, so it is the right time to deprecate it.&lt;br /&gt;
&lt;br /&gt;
As with all deprecation, have no fear. All compilers will generally continue to accept (and or ignore) these cases, so that your code will continue to compile.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">standard</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">deprecation</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">trigraph</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">register</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">exception</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">specification</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">exported</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">template</category>
      <pubDate>Fri, 06 Nov 2009 19:41:32 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/11/06/to-derprecate-or-not-deprecate-that-is-the-question</guid>
      <dc:date>2009-11-06T19:41:32Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/comment/to-derprecate-or-not-deprecate-that-is-the-question</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/feeds/comments?blogPostID=1278</wfw:commentRss>
    </item>
    <item>
      <title>The View (or trip report) from the Oct 2009 C++ Standard meeting Part 2</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/11/06/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting-part-2</link>
      <description>The Library side brought about some of the most interesting changes. I already discussed the key discussions with respect to unifying the Asynchronous futures proposal in &lt;a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/10/24/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting"&gt;The View (or trip report) from the Oct 2009 C++ Standard meeting&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This resulted in a paper which will be published in the upcoming mailing (in about a week from now), which will show the approach on Asynchronous Call &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2996.html"&gt;A Simple Asynchronous Call&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The key changes there were:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;A restoration of the variadic thread and async functions. This restoration is a consequence of analysis and request of the British Standards Institute.&lt;/li&gt;
&lt;li&gt;A convergence on the "as if a new thread" in the launching of asynchronous work. This change avoids undefined behavior arising from any delay in destroying thread-local variables, but requires careful implementation to avoid excessive overhead.&lt;/li&gt;
&lt;li&gt;Removal of the is_ready, has_exception, and has_value query functions. The presence of these function requires still other functions in the synchronous case. Evolution Working Group direction is that the complexity in interface is as yet unjustified, and prudence dictates a smaller initial interface.&lt;/li&gt;
&lt;li&gt;Unspecified behavior for the use of timed wait functions when the unique_future was created from a deferred async.&lt;/li&gt;
&lt;li&gt;The conversion from unique_future to shared_future will execute any deferred work.&lt;/li&gt;
&lt;li&gt;The use of an enum class to better clarify the launching policy.&lt;/li&gt;
&lt;/ul&gt;
&lt;p /&gt;
The other papers which support this is a resolution of most of the futures issues from National Body comments in &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2997.html"&gt;Issues on Futures (Rev. 1)&lt;/a&gt; . A future describes components that a C++ program can use to retrieve in one thread the result (value or exception) from a function that has run in another thread.&lt;br /&gt;
&lt;br /&gt;
These components are not restricted to multi-threaded programs but can be useful in single-threaded programs as well.&lt;br /&gt;
&lt;p /&gt;
The other resolved issues include:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Supporting constexpr in the library properly fixing a number of issues: &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2994.html"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2994.html&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Clarifying use cases of std::forward: &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2951.html"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2951.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p /&gt;
&lt;ul&gt;
&lt;li&gt;A set of small bug fixes and minor improvements to forward_list. It addresses all the issues in raised in LWG Issue 897, and several other matters. It is in &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2988.pdf"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2988.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;moves swap from the &amp;lt;algorithm&amp;gt; header to &amp;lt;utility&amp;gt; to address UK 300 because swap has become a common utility operation with several common idioms relying on it&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;resolving a collection of issues with atomics in &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2992.html"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2992.html&lt;/a&gt;. Most of these issues are related to wording subtlties and wish for clarification from national body reviews.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;we added new type traits is_trivially_copyable, is_literal_type, is_nothrow_constructible, is_constructible, is_explicitly_convertible, underlying_type in  &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2984.html"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2984.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The adoption of &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2554.pdf"&gt;N2554&lt;/a&gt;  (The Scoped Allocator Model) and &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2525.pdf"&gt;N2525&lt;/a&gt; (Allocator-specific Swap and Move Behavior) needed take account of the removal of Concepts from the Frankfurt meeting. It is in &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2982.pdf"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2982.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Most of these are motivated by National Body comments from CD1. This shows the effort and focus of the committee during these periods as we continue to resolve the almost 600 comments that was received from the September 2008 CD1 draft.&lt;br /&gt;
&lt;br /&gt;
There is now plan to issue a second draft for comment (post removal of Concepts, and with the fixes like above from CD1 comments). This will be CD2 and will be aimed for release after the next meeting in March 2010, in Pittsburgh hosted by Carnegie Mellon.&lt;br /&gt;
&lt;br /&gt;
I will describe in another post more details on the schedule changes which is now clearer and I have updated in the C/C++ &lt;a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/community/ccpp/standards"&gt;Standard hub&lt;/a&gt;</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">standard</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">library</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">santa</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">cruz</category>
      <pubDate>Fri, 06 Nov 2009 17:02:40 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/11/06/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting-part-2</guid>
      <dc:date>2009-11-06T17:02:40Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/comment/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting-part-2</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/feeds/comments?blogPostID=1277</wfw:commentRss>
    </item>
    <item>
      <title>The View (or trip report) from the Oct 2009 C++ Standard meeting</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/11/05/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting</link>
      <description>Santa Cruz is a wonderful location for us to decide weighty matters such as how best to ship a C++ Standard with the overloaded number of issues. Normally a surfing town as I am told, I have not had a chance to even make it to the ocean shoreline as yet even though I am only mere blocks from it. So busy we are that let me waste no more time and recap.&lt;br /&gt;
&lt;br /&gt;
1. P.J. Plauger (or Bill Plauger) has been the convener of the C++ meeting. There was an attempt to stop processing any new features in order to facilitate our promised shipping date for the Standard. The problem is what is new? Some issues are discovered late and are serious if not fixed. Some new issues are truly wish list and should be stopped. Other issues are somewhat in between but need to be weighted with all the other.&lt;br /&gt;
&lt;br /&gt;
The vote that tried to stop all new feature failed probably because of how ambiguous the wording is, in my opinion. The issue isn't about stopping consideration of any new feature, but balancing all features based on their seriousness and only being able to handle a fixed number of them based on resource. &lt;br /&gt;
&lt;br /&gt;
But the problem with that model of triage (which is often done in software industry), is that we are all volunteers and you just can't easily make volunteers do the hard thing, when they would rather do what they like.&lt;br /&gt;
&lt;br /&gt;
The end result is that P.J. Plauger has tendered his resignation as convener. I and many would like to thank him for his service and his guidance which has enabled C++ meeting hostings well into 2011.&lt;br /&gt;
&lt;br /&gt;
2. Both Evolution and Core Committees met in addition to Library. Evolution had to deal with a number of pending additions which had been long promised. The most significant discussion is the proposal to add Asynchronous and Futures to C++. This is a higher abstraction for concurrency that allows independent action with a return value.&lt;br /&gt;
&lt;br /&gt;
This was controversial because there were two leading candidate proposals. The majority of the discussion allowed a unified proposal which offered:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;A restoration of the variadic thread and async functions. This restoration is a consequence of analysis and request of the British Standards Institute.&lt;/li&gt;
&lt;li&gt;A convergence on the "as if a new thread" in the launching of asynchronous work. This change avoids undefined behavior arising from any delay in destroying thread-local variables, but requires careful implementation to avoid excessive overhead.&lt;/li&gt;
&lt;li&gt;Removal of the is_ready, has_exception, and has_value query functions. The presence of these function requires still other functions in the synchronous case. Evolution Working Group direction is that the complexity in interface is as yet unjustified, and prudence dictates a smaller initial interface.&lt;/li&gt;
&lt;li&gt;Unspecified behavior for the use of timed wait functions when the unique_future was created from a deferred async.&lt;/li&gt;
&lt;li&gt;The conversion from unique_future to shared_future will execute any deferred work.&lt;/li&gt;
&lt;li&gt;The use of an enum class to better clarify the launching policy.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Interestingly, this discussion really only have bearing on two Library proposals which I will detail in a following blog post.&lt;br /&gt;
&lt;p /&gt;
&lt;br /&gt;
The formal motions for C++ Core language which resulted from this include the usual group of defect fixes, numbering into the 70 range. Basically, all Ready and Tentatively Ready issues of &lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2962.html"&gt;n2962&lt;/a&gt; except issues 799, 812, 861, 919, and 920.&lt;br /&gt;
&lt;br /&gt;
There was also a paper called Reaching Scope of Lambda Expressions &lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2998.htm"&gt;n2998&lt;/a&gt;&lt;br /&gt;
Current lambdas restrict the referents of a lambda expression to the immediately-enclosing function or lambda expression. This restriction is severe and does damage to the utility of the lambda feature. &lt;br /&gt;
&lt;br /&gt;
For example, a simple matrix multiplication kernal would require two enclosing scopes and there would be no captures. It is essentially equivalent to saying that the body of a nested loop cannot access function parameters. &lt;br /&gt;
&lt;br /&gt;
Much of this is from the paper.&lt;br /&gt;
&lt;br /&gt;
Consider the following function to multiply square matricies.&lt;br /&gt;
&lt;p /&gt;
&lt;br /&gt;
&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-plain"&gt;matrix operator*( const matrix&amp;#38; a, const matrix&amp;#38; b )
{
    int n = a.numrows();
    matrix c( n, n );
    for ( int i = 0; i &amp;lt; n; i++ ) {
        for ( int j = 0; j &amp;lt; n; j++ ) {
            double t = 0.0;
            for ( int k = 0; k &amp;lt; n; k++ ) {
                t += a[i][k] * b[k][j];
            }
            c[i][j] = t;
        }
    }
    return c;
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p /&gt;
Its rewrite into functions and lambdas, as intended by the adopted &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2550.html"&gt;N2550&lt;/a&gt;, is as follows. Note that the rewrite is approximately the same size.&lt;br /&gt;
&lt;p /&gt;
&lt;br /&gt;
&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-plain"&gt;matrix operator*( const matrix&amp;#38; a, const matrix&amp;#38; b )
{
    int n = a.numrows();
    matrix c( n, n );
    for_range( 0, n-1, [&amp;#38;]( int i ){
        for_range( 0, n-1, [&amp;#38;]( int j ){
            double t = 0.0;
            for_range( 0, n-1, [&amp;#38;]( int k ){
                t += a[i][k] * b[k][j];
            } );
            c[i][j] = t;
        } );
    } );
    return c;
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p /&gt;
However this straightforward reformulation is ill-formed as per &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2927.html"&gt;N2927&lt;/a&gt; wording for 5.1.1 expr.prim.lambda paragraphs 9&amp;ndash;12. To make the code well-formed, the function must be rewritten as follows, where inserted text shows new code, which sometimes alter variable references.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-plain"&gt;matrix operator*( const matrix&amp;#38; a, const matrix&amp;#38; b )
{
    int n = a.numrows( );
    matrix c( n, n );
    for_range( 0, n-1, [&amp;#38;]( int i ){
        const matrix&amp;#38; a1 = a;
        const matrix&amp;#38; b1 = b;
	int&amp;#38; n1 = n;
	matrix&amp;#38; c1 = c;
        for_range( 0, n1-1, [&amp;#38;]( int j ){
            const matrix&amp;#38; a2 = a1;
            const matrix&amp;#38; b2 = b1;
	    int&amp;#38; n2 = n1;
	    int&amp;#38; i2 = i;
            double t = 0.0;
            for_range( 0, n1-1, [&amp;#38;]( int k ){
                t += a2[i2][k] * b2[k][j];
            } );
            c1[i][j] = t;
        } );
    } );
    return c;
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p /&gt;
Such extensive mechanical editing will inhibit use, make errors more likely, and complicate code maintenance. Such editing is properly the domain of the compiler. &lt;br /&gt;
&lt;br /&gt;
A third proposal &lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2989.html" title="N2989.html"&gt;n2989&lt;/a&gt; "Unified Function Syntax" was not moved after significant discussion on whether it solved significant problem or not especially at this late stage, or just merely being a stylistic wish, especially if you have written large amounts of lambdas with the late specified return syntax and found current syntax ugly.&lt;br /&gt;
&lt;br /&gt;
There was controversy because a previous proposal on auto lambda syntax was moved on the contingency that there would be room to explore a unified function syntax. However, as with all agreement in such a committee, the promise is always to allow the work to go forward with all the resource costs (such as authors and collaborators working together, review committee going over the proposal in this case over eight hours over  several day), but there is no promise that it would be accepted. Such was the case, and of course the disappointment of the authors of this paper. &lt;br /&gt;
&lt;br /&gt;
Well, in the next posting I will go over the Library proposal.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">standard</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">core</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">formal</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">motion</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">santa</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">cruz</category>
      <pubDate>Fri, 23 Oct 2009 21:42:00 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/11/05/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting</guid>
      <dc:date>2009-10-23T21:42:00Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/comment/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/feeds/comments?blogPostID=1274</wfw:commentRss>
    </item>
    <item>
      <title>The View (or trip report) from the Oct 2009 C Standard meeting</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/2009/11/02/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting</link>
      <description>This is the meeting that closes on all new features for the upcoming C1X Standard (with only a few minor known exceptions)&lt;br /&gt;
&lt;br /&gt;
In this meeting, we processed a number of key issues.  We incorporated a few additional details to the memory model and concurrency proposals taken from C++ Standardization. We moved zero-initialization for thread locals from 5.1.2p1 to integrate with 6.7.8p10 &lt;br /&gt;
&lt;br /&gt;
One proposal removed gets() from the standard. This has been a problematic function, and was made obsolete in TC3. The function gets() has been problematic because of uncertain newline removal. The answer for a long time is to use fgets() instead.&lt;br /&gt;
&lt;br /&gt;
We reviewed whether C wishes to support a general syntax for attributes similar to C++. This was rejected as most members were uncomfortable with the need and the consequences. Instead, C will adapt keywords prefixed with a single underscore for future attributes. For example, the alignment proposal will use _Align. &lt;br /&gt;
&lt;br /&gt;
Personally, I feel this will cause C more problems in the future as attributes proliferates. But I do not think it precludes future adaption of a generalized system, if the need becomes serious. although right now the consensus is that C does not want general system for attributes.&lt;br /&gt;
&lt;br /&gt;
I also pitched the concept of a common vectorized type for C based on OpenCL. There was general enthusiasm for the feature as many felt the need to drive for future parallelization support based on many existing implementations of vector extensions. However, due to C1X being on a schedule for completion of features, and the relative size of this proposal, the members felt that this proposal need time to develop. Furthermore, there was interest in maintaining close liaison with OpenCL to ensure we do not create dialects of OpenCL if we were to pick subsets. &lt;br /&gt;
&lt;br /&gt;
In the end, the meeting closed with great belief that we are on track to have a feature completed draft by the next meeting in April, 2010. This puts C on a very promising track to finish on time.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">standard</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">attributes</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">gets</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">_align</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">alignment</category>
      <pubDate>Mon, 02 Nov 2009 06:17:33 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/2009/11/02/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting</guid>
      <dc:date>2009-11-02T06:17:33Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/comment/the-view-or-trip-report-from-the-oct-2009-c-standard-meeting</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/feeds/comments?blogPostID=1276</wfw:commentRss>
    </item>
    <item>
      <title>C Standard meeting in Santa Cruz Oct 26-30</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/2009/10/21/c-standard-meeting-in-santa-cruz-oct-2630</link>
      <description>Hi all, my name is Michael Wong. I will be attending the next C Standard meeting in Santa Cruz on Oct 26-30, representing IBM and Canada. &lt;br /&gt;
&lt;br /&gt;
This promises to be a critical meeting as it is where the C Committee has nominated as the cutoff for adding features to the upcoming C1X (the code name for the next release of C). &lt;br /&gt;
&lt;br /&gt;
One of the paper is the IBM comment on the Bounds Checking Library:&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1388.pdf"&gt;http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1388.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
where we have made responses as follows:&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1389.pdf"&gt;http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1389.pdf&lt;/a&gt;&lt;br /&gt;
&lt;p /&gt;
IBM has also submitted one more proposal in addition to others.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1408.pdf"&gt;http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1408.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This is a proposal to suggest work to start on a common vectorized type that will be native in C. Currently, the situation is like a jungle out there in that there is a proliferation of vector types from various platforms. Even within one compiler, there are many different vectorized type support because a compiler may need to support VMX, VSX, (Altivec), SSE2, MMX, OpenCL, to name a few. &lt;br /&gt;
&lt;br /&gt;
This has caused a profusion of vectorized names which are similar but possibly not extendable as wider vector registers appear. It is also a recipe for non-portability of code.  &lt;br /&gt;
&lt;br /&gt;
The other part of the proposal uses OpenCL as a way to suggest one possible model (but not the only one) of how to support a common Vectorized type. &lt;br /&gt;
&lt;br /&gt;
Please have a look and give me feedback if you wish.&lt;br /&gt;
&lt;br /&gt;
And if you are in the Santa Cruz area, please join us, but first let me know so we can add you to the guest list as the meeting room space is limited based on the projected attendees.&lt;br /&gt;
&lt;br /&gt;
Thanks and I will give a trip report post-meeting.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">standard</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">vector</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">opencl</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">vmx</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">vsx</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">altivec</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">sse2</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">mmx</category>
      <pubDate>Wed, 21 Oct 2009 21:54:54 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/2009/10/21/c-standard-meeting-in-santa-cruz-oct-2630</guid>
      <dc:date>2009-10-21T21:54:54Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/comment/c-standard-meeting-in-santa-cruz-oct-2630</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/c-standard/feeds/comments?blogPostID=1273</wfw:commentRss>
    </item>
    <item>
      <title>C++ Standard Meeting in Santa Cruz on Oct 19-24</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/10/21/c-standard-meeting-in-santa-cruz-on-oct-1924</link>
      <description>I am attending the C++ Standard meeting in Santa Cruz. We have a number of issues of interest to us. &lt;br /&gt;
&lt;br /&gt;
SCARY iterators is a way to improve portability invented by our IBM Watson Lab and collaborated on with testing using the xlC++ compiler. It also can give significant performance gains, especially in Blue Gene software:&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2913.pdf"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2913.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The other issue of interest is continuing discussion on resolution to the Trigraph deprecation issue. Although the idea of deprecation was rejected in Frankfurt, there was a desire to reach a common solution by replacing trigraph with something else. A paper was produced and we will review it in the next meeting:&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2978.pdf"&gt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2978.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The solution will resolve many of the issues in my previous posts about trigraphs but we do have some comments. On the whole, we are pleased with this compromise approach.&lt;br /&gt;
&lt;br /&gt;
The other issues that will be discussed will be how to control the proliferation of issues that could cause a prolonged delay of publication of the Standard. &lt;br /&gt;
&lt;br /&gt;
Like any software delivery, shipping a Standard meets the same problems in that there will be many late issues come up out of integration and testing. Some of those will be new, while others are critical fixes. All issues need to be considered fairly through a triage process to see whether they are critical enough to require fixing before shipping, or can afford to be delayed until post-shipping. &lt;br /&gt;
&lt;br /&gt;
This process  as obvious as it is to do is not something that is easy to do at the Standard level where work is voluntary. There will be repercussion to this as we move forward if we do not adequately resolve this.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">standard</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">santa</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">cruz</category>
      <pubDate>Wed, 21 Oct 2009 16:45:27 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/10/21/c-standard-meeting-in-santa-cruz-on-oct-1924</guid>
      <dc:date>2009-10-21T16:45:27Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/comment/c-standard-meeting-in-santa-cruz-on-oct-1924</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/feeds/comments?blogPostID=1272</wfw:commentRss>
    </item>
    <item>
      <title>IBM's Alphaworks Software Transactional Memory Compiler</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/08/11/ibms-alphaworks-software-transactional-memory-compiler</link>
      <description>Transactional Memory (TM) is a high level abstraction for supporting a safe mutable shared state, such that the user does not have to worry about the low-level details of locking and sharing of global resources. It is basically a class of optimistic speculation techniques such that groups of memory operations are bundled as an atomic operation such that it can resolves the problems with locks, possibly support composability. &lt;br /&gt;
&lt;br /&gt;
The basic idea is to move your group of atomic operations through, assuming that it will be successful, and only rollback when a conflict actually occurs. &lt;br /&gt;
&lt;br /&gt;
At the moment, much of the ideas of TM are there as a way to test out the idea, and possibly be integrated into some future hybrid system. Even practitioners of TM knows there is a certain amount of hype that we have to deal with in any new technology before it drops to a trough and rebounds back to a realistic plateau.&lt;br /&gt;
&lt;br /&gt;
A number of vendors have planned both hardware and software implementations of Transactional Memory. &lt;br /&gt;
&lt;br /&gt;
The software transactional memory compilers from different vendors all use different syntax, and this creates a basic problem with interoperability, and common porting of code. I will deal with this in the next post.&lt;br /&gt;
&lt;br /&gt;
IBM is also working in this area, and has released an Alphaworks compiler supporting Software Transaction, actually last year.&lt;br /&gt;
&lt;br /&gt;
The &lt;a class="jive-link-external" href="http://www.alphaworks.ibm.com/tech/xlcstm"&gt;IBM XL C/C++ for Transactional Memory for AIX&lt;/a&gt; is also accessible from the &lt;a class="jive-link-external" href="http://www-949.ibm.com/software/rational/cafe/docs/DOC-2608"&gt;Resource Library&lt;/a&gt; of the C/C++ Cafe.&lt;br /&gt;
&lt;p /&gt;
The public domain STM runtime is compatible with the AlphaWorks XLC STM release.&lt;br /&gt;
It was released through the &lt;a class="jive-link-external" href="http://sourceforge.net/projects/amino-cbbs/"&gt;Amino Concurrency Building Blocks project&lt;/a&gt;&lt;br /&gt;
The source code is &lt;a class="jive-link-external" href="http://sourceforge.net/projects/amino-cbbs/files/cbbs/0.5.3/cbbs-cpp-src-0.5.3.tar.gz/download"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I will have more to say about the Amino Building Blocks in a future post.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">transactional_memory</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">stm</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">amino</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">concurrency</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">building</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">blocks</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c/c++</category>
      <pubDate>Thu, 06 Aug 2009 17:57:16 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/2009/08/11/ibms-alphaworks-software-transactional-memory-compiler</guid>
      <dc:date>2009-08-06T17:57:16Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/comment/ibms-alphaworks-software-transactional-memory-compiler</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/ccpp-parallel-multicore/feeds/comments?blogPostID=1231</wfw:commentRss>
    </item>
    <item>
      <title>The View (or trip report) from the July 2009 C++ Standard meeting (Part 2)</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/07/20/the-view-or-trip-report-from-the-july-2009-c-standard-meeting-part-2</link>
      <description>One of the issue we were concerned about at this meeting was the intent to deprecate trigraphs. We wrote a paper indicating why we oppose this. This was reviewed in the Evolution Committee and many delegates accepted our position and need to support existing customers. This is good for existing trigraph users.&lt;br /&gt;
&lt;br /&gt;
However, discussion in committee indicate that if we can find an alternate way to support these users then we should explore that with the blessing of the committee. I will be looking at alternatives in future postings.&lt;br /&gt;
&lt;br /&gt;
The C++ Standard Library Working Group also ratified four proposals into the C++0x draft.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2926.pdf" title="n2926.pdf"&gt;C++0x Stream Positioning&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
C/C++ I/O files predates modern file sizes, and are usually based on int or long. This proposal allows them to work better with the new long long type in C++0x.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2923.pdf" title="n2923.pdf"&gt;Specifying the complexity of size() (Revision 1)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This paper addresses the issue of testing size() and not knowing  their complexity constraint. This makes it difficult to use containers where testing size is a frequent operation.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2864.html" title="n2864.html"&gt;Thread Unsafe Standard Functions&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This paper does not make C++ Standard functions thread unsafe, despite the name. Its intention is to clearly identify functions adopted from the C standard that need explicit exemption from the general prohibition on data races.&lt;br /&gt;
&lt;br /&gt;
For example, these are already exempt:&lt;br /&gt;
asctime, ctime, gmtime, localtime, strerror, strtok, rand, &lt;br /&gt;
&lt;br /&gt;
The following functions may have previously been thread unsafe, but must be thread safe to enable effective programming. By failng to mention these functions, the standard implicitly requires them to be thread safe.&lt;br /&gt;
&lt;br /&gt;
    atexit, at_quick_exit, exit, fclose, free, quick_exit, malloc, signal&lt;br /&gt;
&lt;br /&gt;
Furthermore, C++ locale objects are already adequate for thread-safe locales; setlocale() is thread-unsafe. &lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2932.pdf" title="N2932.pdf"&gt;Fixing freestanding: iteration 2.2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A freestanding platform is one that has an Operating System. This proposal aims to:&lt;br /&gt;
· enable the intent of the freestanding specification compliance to be preserved, by adding only two headers to it relative to its C++98/C++03 contents, namely &amp;lt;initializer_list&amp;gt; and&lt;br /&gt;
&amp;lt;type_traits&amp;gt;&lt;br /&gt;
· maintain the historically low dependency of the C++ language, and of C++ compilers, on a corresponding library&lt;br /&gt;
&lt;br /&gt;
The benefits of this proposal are:&lt;br /&gt;
· it enables current users of the freestanding specification to continue using that specification&lt;br /&gt;
· it enables compiler implementers to work fairly independently of library supply&lt;br /&gt;
· it enables library implementers to work fairly independently of compiler supply</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">0x</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">library</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">meeting</category>
      <pubDate>Mon, 20 Jul 2009 07:55:13 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/07/20/the-view-or-trip-report-from-the-july-2009-c-standard-meeting-part-2</guid>
      <dc:date>2009-07-20T07:55:13Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/comment/the-view-or-trip-report-from-the-july-2009-c-standard-meeting-part-2</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/feeds/comments?blogPostID=1225</wfw:commentRss>
    </item>
    <item>
      <title>The View (or trip report) from the July 2009 C++ Standard meeting</title>
      <link>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/07/20/the-view-or-trip-report-from-the-july-2009-c-standard-meeting</link>
      <description>Hello all, we are here in Frankfurt as part of the Canadian delegation. This is a momentous meeting.&lt;br /&gt;
&lt;br /&gt;
At this meeting, Concepts, the major feature of C++ 0x, which enables constrained genericity, or template argument prototyping, has been removed from the C++0x draft.&lt;br /&gt;
&lt;br /&gt;
The reason this is big is because many people have worked on this for over 6 years, and it is probably one of the poster child feature for C++0x. Aside from this, Garbage Collection was also removed early in the process, because of fears of its complexity implications. These two features integrate pervasively into almost every area of the standard, are not orthogonal, and have many legacy impacts. The only other major feature that remain, because it has to is concurrency. This last one appears safe, at least.&lt;br /&gt;
&lt;br /&gt;
The reasons for questioning Concepts at this point can be best described by a paper by Bjarne Stroustrup simply called "Simplifying the use of Concepts": &lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2906.pdf" title="n2906.pdf"&gt;Simplifying the use of Concepts&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Bjarne feels that this is a major setback and some feel that this could be patched. Our next chance could be about 5 years, because now it is a redesign, and it is questionable whether the usability, and implementation issues will really be solved.&lt;br /&gt;
&lt;br /&gt;
In the mean time, there will be implications as we make a major change to the latest C++0x draft, likely issue it out for another Committee Draft and National Body Comment. Features that have been accepted since most of Concept entered in the September, 2008 San Francisco meeting may have to be reviewed as they get stripped of Concepts.&lt;br /&gt;
&lt;br /&gt;
Enough about Concepts as I am sure this will not be the last we will hear of it. Lets move on to other things that we have accomplished in this meeting.&lt;br /&gt;
&lt;br /&gt;
1. We plane to submit the Decimal Technical Report to ISO for Technical Report Ballot. This is an important process goal because it enables a specification for using base-10 as the basis for computations, instead of base-2 as we have been using, and continue to use. &lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2849.pdf" title="n2849.pdf"&gt;Decimal Technical Report&lt;/a&gt;&lt;br /&gt;
&lt;p /&gt;
2. For Core language changes, we accepted a number of new papers. The links do not work until the papers are posted about 2 weeks from now.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf" title="n2927.pdf"&gt;New wording for C++0x Lambdas (rev. 2)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This paper rewords all of the lambda sections which originally had inadequate wording and examples.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2924.pdf" title="n2924.pdf"&gt;Implicitly-Deleted Special Member Functions&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Now that we have removed concepts, some good things that were brought in by concepts should not be thrown out with the bathwater. This intent of this feature is to ensure that template argument deduction fails when it finds an implicitly-declared special&lt;br /&gt;
member function whose definition would fail to compile. The problem came up in the context of concepts, where the&lt;br /&gt;
type std::pair&amp;lt;const int, int&amp;gt; was getting an implicitly-declared copy-assignment operator, such that it met the&lt;br /&gt;
requirements of the CopyAssignable concept. However, the definition of the copy-assignment operator is ill-formed&lt;br /&gt;
(due to the const member), causing unexpected failures. By making this copy-assignment operator deleted, it can no&lt;br /&gt;
longer be used to satisfy the requirements of the CopyAssignable concept. Even without concepts, this issue still&lt;br /&gt;
comes up with the extended SFINAE rules.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html" title="n2930.pdf"&gt;Range-Based For Loop Wording (Without Concepts)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This is another one of those feature that has to be readjusted because of the loss of Concepts. Specifically, range-based for statements will be using argument-dependent lookup of begin and end (which always includes those begin and end functions in namespace std) to provide the iterator to the beginning and ending of the sequence. Specify range-based for statements so that arrays and initializer lists have no dependencies on &amp;lt;iterator&amp;gt;. Refactor &amp;lt;initializer_list&amp;gt; so that it as no dependencies on other headers and includes no other headers.&lt;br /&gt;
Specify the library headers that are to #include &amp;lt;initializer_list&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/N2933.htm" title="N2933.htm"&gt;Pack expansion and attributes (rev. 2)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The aligned_union template in the library was intended to provide simple support for union-like types whose elements may support non-trivial constructors and destructors. When this support was added directly into the language the library template was deemed superfluous, and removed. (This was a TR1 extension, so there are no back-compatibility issues).&lt;br /&gt;
&lt;br /&gt;
However, it has emerged that there remains at least one use case for the feature. When trying to create a 'discriminated union' template using variadic templates, it is not possible to to declare the members of the union via a pack-expansion. This requires a fall-back on an aligned_union like utility.&lt;br /&gt;
&lt;br /&gt;
This would be significantly easier to write if the [&lt;a class="jive-link-adddocument" href="http://www-949.ibm.com/software/rational/cafe/community-document-picker.jspa?communityID=&amp;subject=align%5D"&gt;align]&lt;/a&gt; attribute supported a pack-expansion to return the strictest alignment. This feature is already supported if the types are listed individually, but the grammar does not yet support pack expansion within an attribute. This is seen as the motivating example to extend the attribute grammar to support pack expansion, where the named attribute explicitly documents support. &lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2928.html" title="n2928.html"&gt;Explicit Virtual Overrides&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
We would like to tighten the rules for overriding virtual functions, to detect these problems:&lt;br /&gt;
&lt;br /&gt;
    * a base class B has a virtual function f, and the user declares their own f in derived class D, thereby accidentally overriding B::f.&lt;br /&gt;
    * a base class B has a virtual function f, and the user wishes to override that function in the derived class D, but misspells the name as D::foo.&lt;br /&gt;
    * a base class B has a virtual function f, and the user wishes to override that function in the derived class D, but inadvertently alters the parameter list.&lt;br /&gt;
&lt;br /&gt;
We are deliberately not solving the problem that a base class B1 has a virtual function f, another base class B2 also has a virtual function f with the same signature, the user derives a class D from both B1 and B2 and declares D::f to override both B1::f and B2::f, one of which may have been inadvertent. (This is sometimes referred to as the Siamese Twins problem.)&lt;br /&gt;
&lt;br /&gt;
The scope of the problem was reduced to the minimal necessary to solve the common real-world problems. This means it does not tackle ideas such as 'final overriders' or function renaming, both of which would be available if a scheme closer to the C++/CLI standard was pursued. &lt;br /&gt;
&lt;br /&gt;
There are also library papers which have been approved.  I will describe that in the next posting.</description>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">c++</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">0x</category>
      <category domain="http://www-949.ibm.com/software/rational/cafe/blogs/tags">meeting</category>
      <pubDate>Fri, 17 Jul 2009 12:09:44 GMT</pubDate>
      <author>Michael_Wong</author>
      <guid>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/07/20/the-view-or-trip-report-from-the-july-2009-c-standard-meeting</guid>
      <dc:date>2009-07-17T12:09:44Z</dc:date>
      <wfw:comment>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/comment/the-view-or-trip-report-from-the-july-2009-c-standard-meeting</wfw:comment>
      <wfw:commentRss>http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/feeds/comments?blogPostID=1222</wfw:commentRss>
    </item>
  </channel>
</rss>

