STL/CLR Library Reference


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at STL/CLR Library Reference.

The STL/CLR Library is a packaging of the Standard Template Library (STL), a subset of the Standard C++ Library, for use with C++ and the .NET Framework common language runtime (CLR). With STL/CLR, you can use all the containers, iterators, and algorithms of STL in a managed environment.

To use STL/CLR:

  • Include headers from the cliext include subdirectory instead of the usual Standard C++ Library equivalents.

  • Qualify library names with cliext:: instead of std::.

STL/CLR exposes the generic types and interfaces that it uses in cross-assembly scenarios in the .NET assembly Microsoft.VisualC.STLCLR.dll. This DLL is included in .NET Framework 3.5. If you redistribute an application that uses STL/CLR, you will need to include the .NET Framework 3.5, as well as any other Visual C++ libraries that your project uses, in the dependencies section of your setup project.

In This Section

cliext Namespace
Discusses the namespace that contains all the types of the STL/CLR Library.

STL/CLR Containers
Provides an overview of the containers that are found in the Standard C++ Library, including requirements for container elements, types of elements that can be inserted, and ownership issues.

Requirements for STL/CLR Container Elements
Describes minimum requirements for all reference types that are inserted into STL containers.

How to: Convert from a .NET Collection to a STL/CLR Container
Describes how to convert a .NET collection to an STL/CLR container.

How to: Convert from a STL/CLR Container to a .NET Collection
Describes how to convert an STL/CLR container to a .NET collection.

How to: Expose an STL/CLR Container from an Assembly
Shows how to display the elements of several STL/CLR containers written in a C++ assembly.

In addition, this section also describes the following components of STL/CLR:

adapter (STL/CLR) algorithm (STL/CLR)
deque (STL/CLR) for each, in
functional (STL/CLR) hash_map (STL/CLR)
hash_multimap (STL/CLR) hash_multiset (STL/CLR)
hash_set (STL/CLR) list (STL/CLR)
map (STL/CLR) multimap (STL/CLR)
multiset (STL/CLR) numeric (STL/CLR)
priority_queue (STL/CLR) queue (STL/CLR)
set (STL/CLR) stack (STL/CLR)
utility (STL/CLR) vector (STL/CLR)

See Also

C++ Standard Library