Господа, всем добрый день. Может кто знает, как убедить С++ builder 5 в том, что этот код должен компилироваться? На comeau и линейке VC он работает вполне нормально, а вот билдер категорически отказывается инстанцировать это:
template <class R>
struct fi
{
template <class D, class P1> struct RetProxy
{
};
};
template <class R, class P1>
struct ff
{
template <class D> struct Proxy: public fi<R>::template RetProxy<D,P1>
{
};
};
int main()
{
ff<int, int>::Proxy<int> gg; // E2402 Illegal base class type: formal type 'fi<R>::RetProxy<D,P1>'
// resolves to 'fi<R>::RetProxy<D,int>'return 0;
}
Опыта работы и знания особенностей данного недокомпилятора у меня нет, поэтому если все просто — просьба сильно не пинать... Заранее спасибо!
Спасибо, буду знать, как бороть. Хотя действительно, это не других компиляторах не работает, поэтому полезно только для билдера. Впрочем, и полезность тоже теперь вызывает сомнения — все эти пляски затеяны потому, что VC6 не может возвращать void из функций (return void), в билдере же такой проблемы нет. Видимо, придется таки делать 2 разных функционала — обычный и для "ущербных" компиляторов.