For C/C++, if a variable is autoscoped by an __auto or default(__auto) clause and the variable has a predetermined scope according to the OpenMP Specification, then the compiler will scope it according to that predetermined scope.
For C/C++, the following variables have predetermined scopes:
Variables appearing in threadprivate directives are threadprivate.
Variables with automatic storage duration which are declared in a scope inside the construct are private.
Variables with heap allocated storage are shared.
Static data members are shared.
The loop iteration variable in the for-loop of a for or parallel for construct is private in that construct.
Variables with const-qualified type having no mutable member are shared.
Autoscoping in C and C++ applies only to basic data types: integer, floating point, and pointer. If a user specifies a structure variable or class variable to be autoscoped, the compiler will scope the variable as shared and the enclosing parallel region will be executed by a single thread.