пытаюсь откомпилировать Stingray Stidio под VS2003... на мой взгляд, всё выглядит нормально, однако компилятор считает по-другому...
--<list>--------------------------------------------------------------------------------------
template<class _Ty,
class _Ax = allocator<_Ty> >
class list
: public _List_val<_Ty, _Ax>
{
class iterator
: public const_iterator
{
}
};
--<example>-----------------------------------------------------------------------------------
#include <list>
template <typename _Aggr, typename _Iter = _Aggr::iterator>
class Iterator
{
};
template <typename _Component>
class CComposite
{
typedef std::list<_Component* > Children;
class CompIterator:
public Iterator<Children> // z:\nd\CppTest\Temp.h(16): error C2923: 'Iterator' : 'std::list<_Ty*>::iterator' is
// invalid as template argument '#2', type expected
// z:\nd\CppTest\Temp.h(16): warning C4346: 'std::list<_Ty*>::iterator' : dependent
// name is not a type
{
};
};
Здравствуйте, Andy77, Вы писали:
A>пытаюсь откомпилировать Stingray Stidio под VS2003... на мой взгляд, всё выглядит нормально, однако компилятор считает по-другому...
A>A>--<list>--------------------------------------------------------------------------------------
A>template<class _Ty,
A> class _Ax = allocator<_Ty> >
A> class list
A> : public _List_val<_Ty, _Ax>
A> {
A> class iterator
A> : public const_iterator
A> {
A> }
A> };
A>--<example>-----------------------------------------------------------------------------------
A>#include <list>
A>template <typename _Aggr, typename _Iter = typename _Aggr::iterator>
A>class Iterator
A>{
A>};
A>template <typename _Component>
A>class CComposite
A>{
A> typedef std::list<_Component* > Children;
A> class CompIterator:
A> public Iterator< > // z:\nd\CppTest\Temp.h(16): error C2923: 'Iterator' : 'std::list<_Ty*>::iterator' is
A> // invalid as template argument '#2', type expected
A> // z:\nd\CppTest\Temp.h(16): warning C4346: 'std::list<_Ty*>::iterator' : dependent
A> // name is not a type
A> {
A> };
A>};
A>
template <typename _Aggr, typename _Iter = typename _Aggr::iterator>
Ed.ward
... << RSDN@Home 1.0 beta 7a >>
Здравствуйте, Ed.ward, Вы писали:
EW>Здравствуйте, Andy77, Вы писали:
A>>пытаюсь откомпилировать Stingray Stidio под VS2003... на мой взгляд, всё выглядит нормально, однако компилятор считает по-другому...
A>>A>>--<list>--------------------------------------------------------------------------------------
A>>template<class _Ty,
A>> class _Ax = allocator<_Ty> >
A>> class list
A>> : public _List_val<_Ty, _Ax>
A>> {
A>> class iterator
A>> : public const_iterator
A>> {
A>> }
A>> };
A>>--<example>-----------------------------------------------------------------------------------
A>>#include <list>
A>>template <typename _Aggr, typename _Iter = typename _Aggr::iterator>
A>>class Iterator
A>>{
A>>};
A>>template <typename _Component>
A>>class CComposite
A>>{
A>> typedef std::list<_Component* > Children;
A>> class CompIterator:
A>> public Iterator< > // z:\nd\CppTest\Temp.h(16): error C2923: 'Iterator' : 'std::list<_Ty*>::iterator' is
A>> // invalid as template argument '#2', type expected
A>> // z:\nd\CppTest\Temp.h(16): warning C4346: 'std::list<_Ty*>::iterator' : dependent
A>> // name is not a type
A>> {
A>> };
A>>};
A>>
EW>EW>template <typename _Aggr, typename _Iter = typename _Aggr::iterator>
EW>
EW>Ed.ward
Тоже попытался скомпилировать Stingray Studio 2002 под VS 2003.
Правда я пытался компилировать только SFL.
Столкнулся с той же проблемой.Что касается необходимости добавления ключевого typename, то это не самое страшное на мой взгляд (ибо про это рассказано в MSDN, там где описаны отличия VC++ от предыдущих версий).
Но вот дальше хуже:
упорно не хотел компилится класс CComposite, а именно определение вложенного класса
62: class CompIterator:
63: public Iterator<Children>
ругалось warning-ом аналогичным, тем фрагментам которые указал Andy77. Причем добавление typename не помогло (где я только его не ставил

)
Пришлось вписать руками "typedef Iterator<Children> ChildrenIterator;"
а затем упомянутый выше фрагмент изменить на такой:
class CompIterator:
public ChildrenIterator;
Кроме того, попытавшись в примере Scribble (в подкаталоге Foundation) раскомментировать строку
//#define MDI
получаю ошибку в библиотечном файле mdiwnd.h в методе CMDIFrameImpl::MdiFrameProc, вызванную тем что в последних версиях ATL вместо стандартной структуры MSG используется _ATL_MSG.
Подозреваю что это далеко не все

, точнее все еще впереди

. Наверняка будут и другие грабли.
Поделись пожалуйста опытом испольования Stingray Studio 2002 и VS.NET 2003.
P.S: кажется Roguе Wave выпустила Update для Stingray Studio. У вас случайно нету?