https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109751
--- Comment #15 from Luke Dalessandro <ldalessandro at gmail dot com> --- Thanks for looking at this. I'd like to report it back to boost as an issue, but I want to make sure I understand what to tell them. 1. The error produce by Andrew's reduction ("error: satisfaction of atomic constraint ... depends on itself") is different than the one produced in the original code ("error: satisfaction value of atomic constraint ... changed) from 'false' to 'true'"). I'm to understand that this isn't important here, it's basically reacting to the same thing? 2. The fundamental problem with the boost code is the use of a constrained `friend` template that depends on the template parameter D, that is not yet complete when it is evaluated? 3. A fix for this issue in boost and the iterator_interface is to use a constrained member function rather than attempting to use a constrained friend function? Also, from what I understand, I should report Andrew's reduced case as a bug in clang, and msvc (and maybe nvc++ with its different front-end), which I will do. Thanks for looking into this.