[cfe-dev] [libcxx] std::atomic default constructor

Stephan Tolksdorf st at quanttec.com
Fri Apr 26 03:46:14 PDT 2013


Hi Howard,

If I prepare a patch for the <atomic> header, can this still be fixed 
in time for the next Clang release? Or maybe you already have this on 
your todo list? It seems like a relatively ugly correctness issue that 
should be easy to fix.

Best regards,
   Stephan

On 15.03.13, Howard Hinnant wrote:
> Looks like a bug that needs fixing.  When I wrote <atomic>, = default wasn't implemented yet.  The entire library needs to be scanned for this issue.  And the fix needs to be macro'd up so that we don't break C++03 mode more than it already is.
>
> Howard
>
> On Mar 15, 2013, at 3:50 PM, Stephan Tolksdorf <st at quanttec.com> wrote:
>
>> Hi,
>>
>> Is there a reason that the default constructors for the std::atomic types in libc++'s <atomic> are not explicitly defaulted? In the header the "= default" is commented out and instead a trivial constructor is explicitly defined. This leads to non-standard behaviour, because value initialization doesn't zero-initialize the atomic value.
>>
>> For example, the default constructor of the following struct Test does not zero-initialize atomicValue as expected:
>>
>> struct Test {
>>     int value{}; // is zero-initialized
>>     std::atomic<int> atomicValue{}; // is not zero-initialized
>> };
>>
>> Best regards,
>>   Stephan
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>





More information about the cfe-dev mailing list