- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.6k
 
The Difference Between Core And Non Core Headers
        Stephan T. Lavavej edited this page Mar 11, 2020 
        ·
        1 revision
      
    In our implementation, you'll see that some headers are annotated:
// example standard header (core)
while others are only:
// example standard header
without a (core) suffix. "core" refers to headers that can be #include'd into translation units without generating import declarations forcing linking with the standard libraries. The intent is to enable use of such headers in constrained operating environments like:
- the STL's own import libraries (where we merge functionality into the DLL's import lib to avoid needing to create a new DLL for some piece of functionality)
 - kernel code
 - Windows code that can't link with the STL
 - enclave / SGX protected code
 
Generally, we want "compiler support" headers like <type_traits> to be in the core subset so that even constrained environments can get the "core speaking through std::" features. Core headers all start with #include <yvals_core.h> or another header that does so; other headers generally start with #include <yvals.h>.