This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.

### 551. <ccomplex>

Section: 99 [depr.c.headers] Status: CD1 Submitter: Howard Hinnant Opened: 2006-01-23 Last modified: 2017-06-15

Priority: Not Prioritized

View all other issues in [depr.c.headers].

View all issues with CD1 status.

Discussion:

Previously xxx.h was parsable by C++. But in the case of C99's <complex.h> it isn't. Otherwise we could model it just like <string.h>, <cstring>, <string>:

- <string> : C++ API in namespace std
- <cstring> : C API in namespace std
- <string.h> : C API in global namespace

In the case of C's complex, the C API won't compile in C++. So we have:

- <complex> : C++ API in namespace std
- <ccomplex> : ?
- <complex.h> : ?

The ? can't refer to the C API. TR1 currently says:

- <complex> : C++ API in namespace std
- <ccomplex> : C++ API in namespace std
- <complex.h> : C++ API in global namespace

Proposed resolution:

Change 26.3.11 [cmplxh]:

> The header behaves as if it includes the header `<ccomplex>`., and provides sufficient using declarations to declare in the global namespace all function and type names declared or defined in the neader `<complex>`. [Note: `<complex.h>` does not promote any interface into the global namespace as there is no C interface to promote. --end note]