d:\pg_files\studio\microsoft_sdk\include\gdiplusflat.h(267) : error C2955: 'iterator' : use of class template requires template argument list
d:\pg_files\studio\vc98\include\stlport\stl\_iterator_base.h(64) : see declaration of 'iterator'
гремучая смесь получатся шестой компилятор , пятый сервис пак, платформ sdk август 2001, stlport 46 ..
Мне приходилось под 6 компилировать уже — там был stlport какой не помню. но все было лучше
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
dad wrote:
> dad>>появилась необходимость откомпилировать на 6ой студии со стандартной либо и тоже очумел > dad>>должно же бить какое то обновление? > > ME>Да — STLPort > > угу > Вот сейчас собираю с stl порт: > > 1) не помешает floor, rand , time .... в std > хотя по исходникам должен бы.. > включаю <cmath> все как положено.
#define _STLP_DO_IMPORT_CSTD_FUNCTIONS
> 2) использую gdiplus еще: > при компиляции такого: > > GpStatus WINGDIPAPI > GdipCreatePathIter(GpPathIterator **iterator, GpPath* path); > > говорит: > > d:\pg_files\studio\microsoft_sdk\include\gdiplusflat.h(267) : error C2955: 'iterator' : use of class template requires template argument list > d:\pg_files\studio\vc98\include\stlport\stl\_iterator_base.h(64) : see declaration of 'iterator'
Странно.. А не стоит ли using namespace std перед включением gdiplus headerов?
>> 1) не помешает floor, rand , time .... в std >> хотя по исходникам должен бы.. >> включаю <cmath> все как положено.
ME>
ME>#define _STLP_DO_IMPORT_CSTD_FUNCTIONS
ME>
в доке ничего нет на этот макрос, я его нашел в _config.h
определил. — не момогает, сейчас попробую поковырять.
Год назад этот проект собирался под 7 без шороха с отключенными расширениями языка.
со стандартной либо правда.
>> 2) использую gdiplus еще: >> при компиляции такого: >> >> GpStatus WINGDIPAPI >> GdipCreatePathIter(GpPathIterator **iterator, GpPath* path);
ME>Странно.. А не стоит ли using namespace std перед включением gdiplus headerов?
Ты прав — стояло — в хидере где использую си функции (п 1) из-за того что не собиралость
std::floor .... пришлось написать floor ну и для порядку временно сделал using
хотя все равно не понятно почему так глючит.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
dad>в доке ничего нет на этот макрос, я его нашел в _config.h dad>определил. — не момогает, сейчас попробую поковырять. dad>Год назад этот проект собирался под 7 без шороха с отключенными расширениями языка. dad>со стандартной либо правда.
И не поможет.
dad>хотя все равно не понятно почему так глючит.
Проблемы у vc6:
стандартные ф-ии определены в глобальном пространстве имен
через коленку поддерживается using directive
другая проблема:
error C2039: 'vsnprintf' : is not a member of '`global namespace''
--
# if (defined (__MWERKS__) || defined (_STLP_MSVC) || defined (__ICL) || \
( defined (__BORLANDC__) && __BORLANDC__ > 0x530))
using _STLP_VENDOR_CSTD::vsnprintf;
# endif
# endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
там же определяет:
# if defined (_STLP_MSVC) || defined (__ICL)
namespace _STLP_VENDOR_CSTD {
inline
int vsnprintf(char *s1, size_t n, const char *s2, va_list v)
{
return ::_vsnprintf(s1, n, s2, v);
}
}
# endif
становится непонятным — по логике макросов я посмотрел:
_STLP_VENDOR_CSTD — пустое — т.е рон вроде как опреляет анонимный нэймспейс,
туда помещает эту функцию и потом ее ипортирует в std..
не пашет!
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
J>>>Никогда не варите яйцо в микроволновке V>>Более того. Даже вареное яйцо нельзя греть в микроволновке. Я проверял.
J>Никогда не вредно вымыть микроволновку
некотоые, на заре, проверяли можно ли сушить в духовке кошек или голову ..
(судя по прессе)
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re[3]: auto_ptr и контейнеры
От:
Аноним
Дата:
08.04.04 16:56
Оценка:
А>Ну вот я и хочу узнать почему нельзя... Примерчик с проблемкой можешь написать?
Короче, допустим, ты сделал контейнер автоптров и, допустим, всё скомпилилось.
Допустим ты их туда наложил.
Если какая-то функция контейнера вернёт его тебе по значению (не по ссылке!), в контейнере останется NULL.
dad wrote:
> компилятор 6 (6.00.8804.0) я так понимаю 1200 в их нотации > полную версию не могу чета посомтреть (не знаю где) > > stlport — STLport 4.6.0
Тот код компилится.
А вот с vsnprintf действительно херня какая-то — ф-ция объявляется в анонимном namespace.
ME>Тот код компилится.
да я же написал все ок. а больше я ничего не использую из сишных функций.
ME>А вот с vsnprintf действительно херня какая-то — ф-ция объявляется в анонимном namespace.
угу.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
d:\pg_files\studio\vc98\include\stlport\cstdio(117) : error C2039: 'vsnprintf' : is not a member of '`global namespace''
d:\pg_files\studio\vc98\include\stlport\cstdio(117) : error C2873: 'vsnprintf' : symbol cannot be used in a using-declaration
ok
Error executing cl.exe.
_>тоже вызывает проблемы, хотя и не должон вроде
у меня другая проблема — я писал, что
функции (при текущем стечении макросов) vsnprintf
определяются в cstdio
# if defined (_STLP_MSVC) || defined (__ICL)
namespace _STLP_VENDOR_CSTD {
inline
int vsnprintf(char *s1, size_t n, const char *s2, va_list v)
{
return ::_vsnprintf(s1, n, s2, v);
}
#pragma message("near")
}
# endif
near
d:\pg_files\studio\vc98\include\stlport\cstdio(119) : error C2039: 'vsnprintf' : is not a member of '`global namespace''
d:\pg_files\studio\vc98\include\stlport\cstdio(119) : error C2873: 'vsnprintf' : symbol cannot be used in a using-declaration
ok
а вызываются как:
using _STLP_VENDOR_CSTD::vsnprintf;
т.е. из глобального namespace..
вот ситуация в ростом виде:
#include <iostream>
namespace
{
void ok()
{
std::cout << "ok" << std::endl;
}
}
namespace my
{
using ::ok;
}
int main()
{
return 0;
};
d:\project\misc\test_any\vc6\stl_port.cpp(14) : error C2039: 'ok' : is not a member of '`global namespace''
d:\project\misc\test_any\vc6\stl_port.cpp(14) : error C2873: 'ok' : symbol cannot be used in a using-declaration
Вопрос:
1) Чей баг — stlport или vc60 ?
2) как побороть?
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
> d:\project\misc\test_any\vc6\stl_port.cpp(14) : error C2039: 'ok' : is not a member of '`global namespace''
> d:\project\misc\test_any\vc6\stl_port.cpp(14) : error C2873: 'ok' : symbol cannot be used in a using-declaration
>
> Вопрос: > 1) Чей баг — stlport или vc60 ? > 2) как побороть?
Здравствуйте, dad, Вы писали:
_>>как dad>Именно этим макросом:
Хм... ясенно.
dad>1) Чей баг — stlport или vc60 ?
Похоже что это баг vc6
В предыдущем посте, я привёл примеры, когда его плющит... Хотя они спокойно воспринимаются g++ (3.2) И вроде вполне соответствуют стандарту...
dad>2) как побороть?