/internalPartition

Use the /internalPartition compiler option to treat the input file as an internal partition unit, which is a module partition implementation unit that doesn't contribute to the external interface of the module.

Syntax

/internalPartition filename

Remarks

The following example demonstrates how to use the /internalPartition option:

Source file m-internals.cpp:

// m-internals.cpp
module m:internals;

void internalFunc() {} // cannot have `export` since this is an internal partition

Source file m.ixx:

// m.ixx
export module m;
import :internals; // Cannot export this partition.

export
void wrapper() { internalFunc(); }

To compile this interface:

cl /std:c++latest /internalPartition /c m-internals.cpp

This option can't be used with the /interface compiler option.

/internalPartition is available in Visual Studio 2019 version 16.10, or later.
/internalPartition requires /std:c++20 or later.

To set this compiler option in the Visual Studio development environment

You normally shouldn't set this option in the Visual Studio development environment unless you use a different extension for your partition files. By default, the build system applies this option to files that have a .ixx* extension.

  1. To apply the /internalPartition option to a file explicitly in the IDE, select the file in Solution Explorer. Right-click to open the context menu and select Properties to open the Property Pages dialog.

  2. Set the Configuration dropdown to All Configurations. Set the Platform dropdown to All Platforms.

  3. Open the Configuration Properties > C/C++ > Advanced property page.

  4. Use the dropdown control to modify the Compile As property to Compile as C++ Module Internal Partition (/internalPartition). Choose OK or Apply to save your changes.

See also

Overview of modules in C++
Using C++ Modules in MSVC from the Command Line
C++ Modules conformance improvements with MSVC in Visual Studio 2019 16.5