I've come across a really weird error that only pops up if I use the ansi flag.

#include <memory>

class Test
{
  public:
    explicit Test(std::shared_ptr<double> ptr) {}
};

Here's the compilation, tested with gcc 4.5.2 and 4.6.0 (20101127):

g++ -std=c++0x -Wall -pedantic -ansi test.cpp
test.cpp:6:34: error: expected ')' before '<' token

But compiling without -ansi works. Why?

Edit
Report