http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49445
Mark A. Gibbs <indi.in.the.wired at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |indi.in.the.wired at gmail | |dot com --- Comment #6 from Mark A. Gibbs <indi.in.the.wired at gmail dot com> 2011-06-26 08:37:09 UTC --- (In reply to comment #5) > You are right, I thought it worked for all fundamental types but reviewing the > proposal [1] makes me realise I was wrong. It remains unclear wether user > defined enums should work ... According to 29.5.1 in the draft standard i have (n3242): "There is a generic class template atomic<T>. The type of the template argument T shall be trivially copyable (3.9)." That wording is in several older drafts, too, going back to at least March 2010, so it's not new and probably won't change. So it *should* work for all fundamental types, and even user-defined types (classes) provided they're trivially copyable. Both float and scoped enums are trivially copyable, so atomic<float> and atomic<some_enum_class_type> should work. What the standard says about integral types is just that specializations already exist for them (like specialization atomic<int> exists, and publicly inherits from atomic_int).