Discussion:
[Bug libstdc++/56011] New: [C++11] std::atomic<bool> and std::atomic_bool miss volatile assignment operator overload
daniel.kruegler at googlemail dot com
2013-01-16 20:47:14 UTC
Permalink
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56011



Bug #: 56011

Summary: [C++11] std::atomic<bool> and std::atomic_bool miss

volatile assignment operator overload

Classification: Unclassified

Product: gcc

Version: 4.8.0

Status: UNCONFIRMED

Severity: normal

Priority: P3

Component: libstdc++

AssignedTo: ***@gcc.gnu.org

ReportedBy: ***@googlemail.com





Using gcc 4.8.0 trunk the following program - compiled with the flags



-pedantic-errors -std=c++11 -Wall



is rejected:



//----------------------------------

#include <atomic>



int main() {

volatile std::atomic<bool> ab1;

ab1 = true;

volatile std::atomic_bool ab2;

ab2 = true;

}

//----------------------------------



"main.cpp||In function 'int main()':|

main.cpp|5|error: ambiguous overload for 'operator=' (operand types are

'volatile std::atomic<bool>' and 'bool')|

main.cpp|5|note: candidates are:|

[..]gcc\include\c++\4.8.0\atomic|485|note: std::atomic<bool>&

std::atomic<bool>::operator=(const std::atomic<bool>&) volatile <deleted>|

[..]gcc\include\c++\4.8.0\atomic|64|note: std::atomic_bool&

std::atomic_bool::operator=(const std::atomic_bool&) volatile <deleted>|

main.cpp|7|error: use of deleted function 'std::atomic_bool&

std::atomic_bool::operator=(const std::atomic_bool&) volatile'|

[..]gcc\include\c++\4.8.0\atomic|64|error: declared here|

"



The problem is due to the missing overload (part of the specification):



bool operator=(bool __i) volatile noexcept;
redi at gcc dot gnu.org
2013-01-16 22:31:31 UTC
Permalink
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56011



Jonathan Wakely <redi at gcc dot gnu.org> changed:



What |Removed |Added

----------------------------------------------------------------------------

Status|UNCONFIRMED |NEW

Last reconfirmed| |2013-01-16

Ever Confirmed|0 |1

Loading...