пытаюсь скомпилить вполне себе рабочий код, но что-то идет не так...
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(841): warning C4346: 'std::forward_list<_Ty,_Alloc>::std::forward_list<_Ty,_Alloc>::_Alty::is_always_equal::value': dependent name is not a type
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(841): note: prefix with 'typename' to indicate a type
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(841): error C2061: syntax error: identifier 'value'
1>clang.exe : error : clang frontend command failed due to signal (use -v to see invocation)
1> clang with Microsoft CodeGen version 3.7.0
1> Provided as — is without support
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Clang 3.7\bin\x86\x86\c2.dll version 19.0.23413.0
1> Target: i686-pc-windows-msvc
1> Thread model: posix
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>пытаюсь скомпилить вполне себе рабочий код
давай небольшой пример кода
мой код собирается в VS2015 U1 без ворнингов и ошибок при Level=3, toolset v140, Debug/Win32
U>давай небольшой пример кода
это сложно. дело в том, что я напрямую нигде не использую forward_list.
U>мой код собирается в VS2015 U1 без ворнингов и ошибок при Level=3, toolset v140, Debug/Win32
знаешь, этот код и у меня компилится %)
U>гипотеза: ты хачишь
Здравствуйте, niXman, Вы писали:
U>>мой код собирается в VS2015 U1 без ворнингов и ошибок при Level=3, toolset v140, Debug/Win32 X>знаешь, этот код и у меня компилится %)
ну тогда проблема в другом, либо где-то сидит баг. надо пример минимальный составлять и в MS багу слать
U>>ну или U1 не поставил X>а как проверить?
VS->Help->About
или сравнить с моими числами:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>vcvarsall.bat && cl.exe
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x86
Здравствуйте, uzhas, Вы писали:
U>ну тогда проблема в другом, либо где-то сидит баг. надо пример минимальный составлять и в MS багу слать
пытаюсь разобраться, откуда этот баг берется...
VS->>Help->About U>или сравнить с моими числами: U>
U>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>vcvarsall.bat && cl.exe
U>Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x86
все так же.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(1214): warning C4346: 'std::forward_list<_Ty,_Alloc>::std::forward_list<_Ty,_Alloc>::_Alty::is_always_equal::value': dependent name is not a type
1> c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(1214): note: prefix with 'typename' to indicate a type
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(1214): error C2061: syntax error: identifier 'value'
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(1215): error C2091: function returns function
а вот код:
void swap(_Myt& _Right)
_NOEXCEPT_OP(_Alty::is_always_equal::value) // <<<<<<<<<<<<<<<<<<<< 1214
{ // exchange contents with _Right // <<<<<<<<<<<<<<<<<<<< 1215if (this == &_Right)
; // same object, do nothingelse if (this->_Getal() == _Right._Getal())
{ // same allocator, swap control informationthis->_Swap_all(_Right);
_Swap_adl(this->_Myhead(), _Right._Myhead());
}
else if (_Alty::propagate_on_container_swap::value)
{ // swap allocators and control informationthis->_Swap_alloc(_Right);
_Swap_adl(this->_Myhead(), _Right._Myhead());
}
else
{ // containers are incompatible#if _ITERATOR_DEBUG_LEVEL == 2
_DEBUG_ERROR("forward_list containers incompatible for swap");
#else/* ITERATOR_DEBUG_LEVEL == 2 */
_XSTD terminate();
#endif/* ITERATOR_DEBUG_LEVEL == 2 */
}
}
и вот так:
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(1564): error C2065: '_Left': undeclared identifier
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(1564): error C2065: '_Right': undeclared identifier
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\forward_list(1564): error C2206: 'swap': typedef cannot be used for function definition
Здравствуйте, watchmaker, Вы писали:
W>Да у тебя просто в коде где-то написано
#define _NOEXCEPT_OP
поиск по проекту и зависимостям ничего не нашел.
к тому же, если бы оно действительно было так, то препроцессор бы говорил, что оно уже задефайнено. разве нет?
Здравствуйте, watchmaker, Вы писали:
W>Вывод препроцессора покажи.
точно!
только не _NOEXCEPT_OP передефайнен, а #define noexcept был когда-то задефайнен как воркароунд для msvc2013. стыдно, стыдно
Здравствуйте, niXman, Вы писали:
X>это чтож получается, STL, входящая в поставку MSVC2015, не рабочая? X>или я что-то делаю не так?
недавно сталкнулись с точно такой же проблемой при прикручивании 3rdparty библиотеки к проекту. Оказалось, что библиотека переопреляла макрос noexcept стлевский и много чего в стл точно вот так не компилилось.
Здравствуйте, PM, Вы писали:
PM>Потому что в MS считают, что C++11 до сих пор полностью не реализован Версия компилятора определена в _MSC_VER
спасибо!
еще вопрос.
при линковке студия говорит: LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc140-mt-gd-1_60.lib'
я указал путь линкеру, но в той директории нет libboost_thread-vc140-mt-gd-1_60.lib, но есть libboost_thread-vc140-mt-s-1_60.lib и libboost_thread-vc140-mt-sgd-1_60.lib.
предсобранный буст скачал отсюда: http://www.npcglib.org/~stathis/blog/precompiled-boost/
что вообще значат все эти mt-gd,mt-s,mt-sgd ?
и откуда студия знает какую либу линковать? я ей нигде не говорил что нужно линковаться с бустом.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>что вообще значат все эти mt-gd,mt-s,mt-sgd ? X>и откуда студия знает какую либу линковать? я ей нигде не говорил что нужно линковаться с бустом.
BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
contains one or more of the following letters after
a hyphen:
s static runtime (dynamic if not present).
g debug/diagnostic runtime (release if not present).
y Python debug/diagnostic runtime (release if not present).
d debug build (release if not present).
p STLport build.
n STLport build without its IOStreams.
чот не въезжаю, в чем разница между g и d?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)