<commit_before># List of online C++ compilers

Online compilers can be useful tools to quickly compile a snippet of code without having to install a proper compiler on our computer. They can be especially useful to play with the newest language features, to share code snippets online or to compare different compilers.

The following list provides information about available online compilers and their most important features. Support for other languages than C++ is available on many of the listed websites but not covered here.
Depending on the versions of the compilers used, they support different versions of the C++ standard. See [this page](http://en.cppreference.com/w/cpp/compiler_support) for more detailed feature lists. Since C++17 is not fully standardized yet, it is marked with an asterisk, where (most of) the expected C++17 features are available.

Besides mere compilation, most online compilers also execute the compiled program. The possibilities to parametrize the compilation via compiler flags, to pass command line/runtime parameters to the executed program and to provide input for standard input vary between the different compilers.

## TL;DR 

| **URL** | **Distinguishing features** |
| ------- | --------------------------- |
| [http://melpon.org/wandbox](http://melpon.org/wandbox) | multiple files, very modern compilers (C++17) |
| [http://godbolt.org](http://godbolt.org) | compile to assembly as you type, on multiple compilers (C++17) <br/> no execution of compiled program (yet) |
| [http://coliru.stacked-crooked.com](http://coliru.stacked-crooked.com) | GCC & Clang (C++14-17), freely editable shell command line |
| [http://rextester.com/](http://rextester.com/) | GCC, Clang, MSVC (C++14), collaborative live editing features |
| [https://ideone.com/](https://ideone.com/) | GCC (C++14) |
| [http://webcompiler.cloudapp.net/](http://webcompiler.cloudapp.net/) | up-to-date MSVC 19/2017 (C++14-17) |
| [http://cpp.sh/](http://cpp.sh/) | GCC (C++11-14), interactive Stdin |
| [https://www.tutorialspoint.com/compile_cpp11_online.php](https://www.tutorialspoint.com/compile_cpp11_online.php) | multiple files like proper IDE, GCC (C++11) <br/> but sluggish web app |
| [http://codepad.org/](http://codepad.org/) | GCC (C++03) |
| [http://fiddle.jyt.io/](http://fiddle.jyt.io/) | interactive C++ interpreter/terminal, but currently broken |


## Wandbox

| **URL**                | [http://melpon.org/wandbox](http://melpon.org/wandbox)
| **Compilers**          | GCC 4.4.7 .. 8.0.0 (HEAD)  <br/>  Clang 3.1 .. 5.0.0 (HEAD)  <br/>  zapcc 1.0.1
| **C++ version**        | C++17*
| **Compiler flags**     | dropdown selection + free text
| **Runtime parameters** | yes
| **Stdin**              | yes
 
Wandbox provides pretty much all of the functionality you'd want from a typical online compiler, including support for multiple files and different editor keybindings. 
Besides the standard library, it features a few libraries including Boost (up to 1.64), Sprout and MessagePack. The compiled programs run in a sandbox environment that allows file I/O. 
The snapshot versions of GCC and Clang that are provided make it possible to play with the latest C++17 features.


## Compiler Explorer (Godbolt)

| **URL**                | [http://godbolt.org](http://godbolt.org)
| **Compilers**          | GCC 4.4.7 .. 8.0.0 (snapshot) <br/>  Clang 3.0 .. 5.0.0 (trunk) <br/>  MSVC 19/2017 (x86, x64) <br/>  icc 13, 16, 17 <br/>  zapcc 190308 <br/>  PowerPC gcc 4.8, PowerPC 64 6.3.0 <br/>  MSP430 gcc 4.5.3 .. 6.2.1 <br/>  MIPS gcc 5.4 (32/64 bit, el) <br/>  elcc 0.1.33, 0.1.34 <br/>  AVR gcc 4.5.4, 4.6.4 <br/>  ARM64 gcc 5.4 <br/>  ARM gcc 4.5.4 .. 5.4.1 <br/>  ARM CL 2017 RTW
| **C++ Version**        | C++17*
| **Compiler flags**     | free text
| **Runtime parameters** | N/A
| **Stdin**              | N/A

Compiler Explorer is a compile-as-you-type IDE with a unique feature as it presents the assembly produced by the compilers. The resulting assembler can be color-mapped to the originating C++ code. It supports the use of different sources and multiple compilers at the same time, so we can compare the assembly produced by different code and/or different compilers, optimization flags, etc. <commit_msg>Adds ToC and more table columns.<commit_after># List of online C++ compilers

Online compilers can be useful tools to quickly compile a snippet of code without having to install a proper compiler on our computer. They can be especially useful to play with the newest language features, to share code snippets online or to compare different compilers.

The following list provides information about available online compilers and their most important features. Support for other languages than C++ is available on many of the listed websites but not covered here.
Depending on the versions of the compilers used, they support different versions of the C++ standard. See [this page](http://en.cppreference.com/w/cpp/compiler_support) for more detailed feature lists. Since C++17 is not fully standardized yet, it is marked with an asterisk, where (most of) the expected C++17 features are available.

Besides mere compilation, most online compilers also execute the compiled program. The possibilities to parametrize the compilation via compiler flags, to pass command line/runtime parameters to the executed program and to provide input for standard input vary between the different compilers.

* Table of Contents
{:toc}

## TL;DR 

| **Name** | **URL** | # Compilers | Execution | **Distinguishing features** | Other Languages |
|-----------------------------|--------------------------------------------------------------------------------------------------------------------|:-----------:|:---------:|-------------------------------------------------------------------------------------------------------------|:---------------:|
| Wandbox | [http://melpon.org/wandbox](http://melpon.org/wandbox) | 35 | ✔️ | multiple files, very modern compilers (C++17) | ✔️ |
| Compiler Explorer (Godbolt) | [http://godbolt.org](http://godbolt.org) | 50+ |  | compile to assembly as you type, on multiple compilers (C++17) <br/> no execution of compiled program (yet) | ✔️ |
| Coliru | [http://coliru.stacked-crooked.com](http://coliru.stacked-crooked.com) | 2 | ✔️ | GCC & Clang (C++14-17), freely editable shell command line |  |
| Rextester | [http://rextester.com/](http://rextester.com/) | 3 | ✔️ | GCC, Clang, MSVC (C++14), collaborative live editing features | ✔️ |
| Ideone | [https://ideone.com/](https://ideone.com/) | 1 | ✔️ | GCC (C++14) | ✔️ |
| Visual C++ Compiler Online | [http://webcompiler.cloudapp.net/](http://webcompiler.cloudapp.net/) | 1 | ✔️ | up-to-date MSVC 19/2017 (C++14-17) |  |
| C++ Shell | [http://cpp.sh/](http://cpp.sh/) | 1 | ✔️ | GCC (C++11-14), interactive Stdin |  |
| Tutorialspoint CodingGround | [https://www.tutorialspoint.com/compile_cpp11_online.php](https://www.tutorialspoint.com/compile_cpp11_online.php) | 1 | ✔️ | multiple files like proper IDE, GCC (C++11) <br/> but sluggish web app |  |
| Codepad | [http://codepad.org/](http://codepad.org/) | 1 | ✔️ | GCC (C++03) | ✔️ |
| LoopPerfect C++ Fiddle | [http://fiddle.jyt.io/](http://fiddle.jyt.io/) |  |  | interactive C++ interpreter/terminal, but currently broken |  |

## Wandbox

| **URL**                | [http://melpon.org/wandbox](http://melpon.org/wandbox)
| **Compilers**          | GCC 4.4.7 .. 8.0.0 (HEAD)  <br/>  Clang 3.1 .. 5.0.0 (HEAD)  <br/>  zapcc 1.0.1
| **C++ version**        | C++17*
| **Compiler flags**     | dropdown selection + free text
| **Runtime parameters** | yes
| **Stdin**              | yes
 
Wandbox provides pretty much all of the functionality you'd want from a typical online compiler, including support for multiple files and different editor keybindings. 
Besides the standard library, it features a few libraries including Boost (up to 1.64), Sprout and MessagePack. The compiled programs run in a sandbox environment that allows file I/O. 
The snapshot versions of GCC and Clang that are provided make it possible to play with the latest C++17 features.


## Compiler Explorer (Godbolt)

| **URL**                | [http://godbolt.org](http://godbolt.org)
| **Compilers**          | GCC 4.4.7 .. 8.0.0 (snapshot) <br/>  Clang 3.0 .. 5.0.0 (trunk) <br/>  MSVC 19/2017 (x86, x64) <br/>  icc 13, 16, 17 <br/>  zapcc 190308 <br/>  PowerPC gcc 4.8, PowerPC 64 6.3.0 <br/>  MSP430 gcc 4.5.3 .. 6.2.1 <br/>  MIPS gcc 5.4 (32/64 bit, el) <br/>  elcc 0.1.33, 0.1.34 <br/>  AVR gcc 4.5.4, 4.6.4 <br/>  ARM64 gcc 5.4 <br/>  ARM gcc 4.5.4 .. 5.4.1 <br/>  ARM CL 2017 RTW
| **C++ Version**        | C++17*
| **Compiler flags**     | free text
| **Runtime parameters** | N/A
| **Stdin**              | N/A

Compiler Explorer is a compile-as-you-type IDE with a unique feature as it presents the assembly produced by the compilers. The resulting assembler can be color-mapped to the originating C++ code. It supports the use of different sources and multiple compilers at the same time, so we can compare the assembly produced by different code and/or different compilers, optimization flags, etc. 
{'fraction_non_alphanumeric': 0.1678306416412047, 'fraction_numerical': 0.03262767350501964, 'mean_word_length': 3.0769572953736657, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 8, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '429591', 'n_tokens_mistral': 2990, 'n_tokens_neox': 2763, 'n_words': 1051}