I've distilled an issue that I'm having down to the following code snippet,
which I believe should compile, but instead clang is flagging "not covariant" return types...
#include<stdexcept>
class base : public std::exception
{
public:
virtual base * move() throw () = 0;
};
template <typename T>
class derived : public base
{
public:
derived *move() throw() {return 0;}
};