Tag Archives: clang

Online C++ Compilers

Today I took a look at some Online C++ compilers – this would have been very useful when checking portability of some code in my recent post on C++11 Concurrency.

First, here’s LiveWorkspace.org which makes g++ 4.72 and 4.8 available as well as clang 3.2:


Second, Rise4Fun allows you to try Visual Studio:

As anticipated, the Counter class (which contains a mutable member of type int&) compiles under Visual Studio, but doesn’t under clang 3.2 or gcc (which is correct according to the C++ standard). What’s great about LiveWorkspace is how quickly you can switch between compilers to see how they like the same code. For example, the amended code that treats int& as a template parameter compiles under g++ 4.7.2 and 4.8, but doesn’t under clang 3.2:

#include <iostream>

template<typename T>
class Counter
  mutable T m_t;
  Counter(T t) : m_t(t){}
  void Increment() const { ++m_t; }

int main()
  int count = 0;
  Counter<int&> counter(count);
  std::cout << count << "\n";
  return 0;

Leave a comment

Filed under C++