https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103922
Bug ID: 103922 Summary: fconcepts syntax cause g++ to stop checking access modifiers Product: gcc Version: 9.4.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: kessido at gmail dot com Target Milestone: --- As far as I could verify this has not been mention anywhere. Versions: g++-9 (all versions I tried). Was fixed in g++-10. Compiler flags: -fconcepts -std=c++17 Symptoms: The following line cause any code after it to ignore access modifiers: class A { int x; }; template<typename T, typename U> concept ConceptWithTwoImputs = true; template<typename T> concept ConceptThatUsesIt = requires(T t) { {t} -> ConceptWithTwoImputs<bool>; // problematic line. }; int main() { A a; a.x = 1; } If you comment this line, it would result in "error: 'int A::x' is private within this context".