I have this class definition (simplified here) which compiled fine with VS2008. In VS2017, I get a syntax error C2059 on the first angle bracket:
template < typename Function, typename Base, typename Specialiser = Base >
class FunctionTermBase : public Base
{
public:
// typedef typename Function::result_type result_type;
typedef typename Base term_type;
typedef typename Specialiser specialiser;
protected:
FunctionTermBase() { }
public:
template <typename T>
struct Specialise {
typedef typename specialiser::Specialise<T>::type type;
};
};
I'd appreciate if someone could tell me what is wrong with this code?