This proposes to add an interface for transforming C++ source into usable executable programs. As such it aims to provide a common definition of compiler frontend tool arguments and options for transforming source code to translation units and linking those into executable programs.

1.1. Background and Motivation

This proposal is based on the notion that it should be possible for a C++ user, both beginner and advanced, to easily transform their source to immediately executable form in a consistent method across compilers.

One aspect of this proposal is to make it possible for future C++ educators, and book authors, to provide complete usage examples that work for any particular tool they and their audience use. While this proposal does not prescribe a particular executable tool, it is trivial to write minimal tool that passes arguments directly to these interfaces. It is hoped that vendors would provide ready made compiler front ends for their tools accepting the standard arguments.

It is also the intent for this proposal to be an initial step in the road towards standardizing the tooling around C++. With the goal of having a global and consistent tooling ecosystem to facilitate the introduction into C++ for anyone and to ease the interoperability of future tooling like package and dependency managers by having a single common set of options to base solutions on.