Microsoft Proxy 4 is a header-only C++20 library for runtime polymorphism that lets unrelated types provide the operations an interface needs without inheriting from a shared abstract base. Its pointer-based model can dispatch member functions, free functions, operators and conversions. But there is an important adoption caveat: Microsoft’s repository was marked archived and read-only on January 29, 2026, so Proxy 4 should be evaluated as a project without an active repository rather than assumed to be actively maintained.
What is Microsoft Proxy 4?
Proxy is a C++ library for calling operations through a common interface when the underlying objects may have different, unrelated types. Instead of requiring each implementation class to derive from a base class, a programmer describes the operations needed in a facade. Types that support those expressions can then be used through a pro::proxy<F> wrapper, where F identifies the facade.
The wrapper follows pointer semantics: it refers to a pointer-like value that satisfies the facade, rather than making the object itself inherit an interface. Microsoft’s specification says the stored pointer value fits inside the proxy object’s footprint, so that representation does not require an additional dynamic allocation. This does not mean the underlying object can never be dynamically allocated; its storage and lifetime are choices made by the program and the pointer-like value used.
Proxy is non-intrusive: implementation types do not need to be changed to participate. The facade determines which expressions can be dispatched, keeping the polymorphic contract focused on what a consumer actually needs.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
How Proxy 4 compares with virtual inheritance
Proxy and classic virtual functions both support runtime dispatch, but they express the relationship between an interface and its implementations differently. Proxy’s advantage is flexibility in defining and composing the operations; it is not a drop-in replacement for every virtual class design.
| Consideration | Classic virtual interface | Proxy 4 |
|---|---|---|
| Must implementations inherit? | Typically, each implementation derives from the abstract base interface. | No. Unrelated types can participate if they satisfy the facade’s requested expressions. |
| Dispatch model | Virtual member functions declared on the base class. | A facade describes expressions for dispatch, including member and non-member operations. |
| Operations represented | Primarily member functions in the class interface. | Member functions, free functions, free functions exposed as members, operators, and explicit or implicit conversions. |
| Object semantics | Often used through a base pointer or reference; ownership is determined by the surrounding design. | Pointer semantics through a proxy wrapper; ownership and lifetime depend on the pointer-like value and the program’s choices. |
| Allocation implications | The interface alone does not require heap allocation, though common ownership patterns may use it. | The proxy’s stored pointer value does not require a separate dynamic allocation; allocation of the referred-to object is a separate decision. |
| Language and compiler requirement | Virtual functions are available in older C++ standards. | C++20 is required; Microsoft documents specific minimum compiler versions listed below. |
| Maintenance status | Not applicable to the language feature itself. | The Microsoft repository is archived and read-only as of January 29, 2026. |
Use a conventional virtual interface when inheritance is a natural part of the model and a straightforward member-function contract is sufficient. Consider Proxy when you cannot or do not want to modify implementation types, or when the desired polymorphic surface includes operations that are not naturally virtual members. In either case, choose based on ownership, API shape, compiler support, and long-term maintenance—not an assumed performance win.
What Proxy 4 adds
Microsoft’s 4.0.0 release centers on a composable “skills” API, revised semantics for core building blocks, and leaner code generation. The builder adds add_skill; capabilities including formatting, wide formatting, RTTI, view and weak access, and slim mode are organized under pro::skills.
- Composable facade capabilities: skills provide a way to assemble optional capabilities into a facade.
- Major versions can coexist: inline namespaces
pro::v3andpro::v4allow code to use both major releases side by side. - Broader compiler coverage: the 4.0.0 announcement notes Intel oneAPI compiler coverage in continuous integration.
- Browser experiments: Proxy examples are available in Compiler Explorer, letting readers try code without first installing a local toolchain.
Microsoft describes code generation as leaner, but the available release information does not establish an independently measured speed advantage over virtual functions or other type-erasure designs. Treat that as a project design claim, not a benchmark result.
Recommended Free Tools
What can a Proxy facade dispatch?
A facade can describe more than virtual member calls. Microsoft’s documentation lists these dispatch facilities:
- Member functions
- Free functions
- Free functions exposed as member-style operations
- Operators
- Explicit conversions
- Implicit conversions
This lets a facade express the operations callers need while leaving the participating types unchanged. For example, a design can make a non-member operation or an operator part of the polymorphic contract rather than forcing every operation into a shared base class. The exact expressions and requirements belong in the facade; types that do not meet them cannot satisfy that facade.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How to install Proxy 4
Proxy is header-only, so it does not require building a separate library binary. Microsoft documents four ways to obtain the headers: copy them into a project, use vcpkg, use Conan, or use CMake FetchContent. The project also points to Compiler Explorer for trying examples online.
- Check the toolchain. Confirm that the compiler meets one of Microsoft’s documented minimum versions and is configured for C++20.
- Choose a distribution route. For a small or tightly controlled project, copying the headers may be sufficient. For dependency-managed builds, use the documented vcpkg or Conan route. A CMake project can use
FetchContent. - Follow the current package instructions. Package names, manifests, and integration details can change; consult the official Proxy repository or the relevant package index before adding dependency declarations. The repository’s archived status means current package availability should be verified rather than presumed.
- Try an example before integrating. Compiler Explorer can be used to experiment in a browser. For a local build, enable C++20 using the compiler’s corresponding standard flag or setting.
The documentation lists these minimum compiler versions and C++20 options:
Best Value
| Compiler | Documented minimum | C++20 option |
|---|---|---|
| GCC | 13.1 | -std=c++20 |
| Clang | 16.0 | -std=c++20 |
| MSVC | 19.31 | /std:c++20 |
| NVIDIA HPC | 24.1 | -std=c++20 |
| Intel oneAPI | 2024.0 | -std=c++20 |
These are the minimums published in Microsoft’s documentation, not a guarantee that every newer or vendor-specific toolchain configuration has been tested. Check the package route and compiler combination you intend to use.
Is Microsoft Proxy still maintained?
As of October 3, 2026, Microsoft’s microsoft/proxy GitHub repository is marked archived and read-only, with the archive date shown as January 29, 2026. That means repository changes are not being accepted there; it does not by itself establish whether a third party has forked or repackaged the code. Before adopting Proxy in a project with a long support horizon, confirm the source and package versions available to you, review the licensing and support expectations, and decide whether your team is prepared to maintain a fork if needed.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

