That's a good point.  Since mutex is a new c++11 feature, why is it
injected into the std namespace when not compiling with c++11.  I looked at
the mutex header, and it doesn't test current value of __cplusplus.

Should it?

On Mon, Feb 29, 2016 at 3:07 PM, Jim Porter via cfe-users <
cfe-users@lists.llvm.org> wrote:

> On 2/29/2016 12:15 PM, Brian Cole via cfe-users wrote:
>
>> Was hoping for something that would be C++03 compatible as well since we
>> still have C++03 compilers to target as well.
>>
>
> If you're #including <mutex>, haven't you locked yourself into C++11 (or
> better) anyway? In that case, you should use curly braces for your
> initializer (or at least stop saying `using namespace std;`).
>
> For existing code where `mutex` is a global variable, you'll be fine. If
> you add
>
>   #include <mutex>
>   using namespace std;
>
> to existing code, you'll get a compiler error because the name `mutex` is
> now ambiguous.
>
> If you wanted to warn about this in *all* cases, you'd need an additional
> warning to detect function declarations in local scope, since that's what
> C++ would treat this as. Clang doesn't have such a warning, but perhaps you
> could convince someone to add it.
>
> - Jim
>
>
>
> _______________________________________________
> cfe-users mailing list
> cfe-users@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
>
_______________________________________________
cfe-users mailing list
cfe-users@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users

Reply via email to