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;
public:
Counter(T t) : m_t(t){}
void Increment() const { ++m_t; }
};
int main()
{
int count = 0;
Counter<int&> counter(count);
counter.Increment();
std::cout << count << "\n";
return 0;
}