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: unassig...@gcc.gnu.org

        ReportedBy: daniel.krueg...@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;

Reply via email to