MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 09:53
Оценка:
снова драсте.

пытаюсь скомпилить вполне себе рабочий код, но что-то идет не так...

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'

в forward_list(841) находится это:
    _Myt& operator=(_Myt&& _Right)
        _NOEXCEPT_OP(_Alty::is_always_equal::value) // <<<<<<<<<<<<<<<<<<<<<<<<< 841
        {    // assign by moving _Right
        if (this != &_Right)
            {    // different, assign it
            clear();

            if (_Alty::propagate_on_container_move_assignment::value
                && this->_Getal() != _Right._Getal())
                this->_Move_alloc(_Right._Getal());

            _Assign_rv(_STD forward<_Myt>(_Right));
            }
        return (*this);
        }

это чтож получается, STL, входящая в поставку MSVC2015, не рабочая?
или я что-то делаю не так?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 16.02.2016 9:54 niXman . Предыдущая версия .
Re: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 10:08
Оценка:
выбрал CLang frontend, так он вообще падает:

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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: MSVC2015, странные ошибки %)
От: uzhas Ниоткуда  
Дата: 16.02.16 11:06
Оценка:
Здравствуйте, niXman, Вы писали:

X>пытаюсь скомпилить вполне себе рабочий код

давай небольшой пример кода
мой код собирается в VS2015 U1 без ворнингов и ошибок при Level=3, toolset v140, Debug/Win32
#include "StdAfx.h"

#include <forward_list>
struct A
{

};

int main()
{
    std::forward_list<int> l1;
    std::forward_list<int> l2;
    l1 = l2;
    l1 = std::move(l2);


    std::forward_list<A> d1;
    std::forward_list<A> d2;
    d1 = d2;
    d1 = std::move(d2);
}


X>или я что-то делаю не так?

гипотеза: ты хачишь
Автор: niXman
Дата: 16.02.16
студию, как следствие, ломаешь
ну или U1 не поставил
Re[2]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 11:34
Оценка:
Здравствуйте, uzhas, Вы писали:


U>давай небольшой пример кода

это сложно. дело в том, что я напрямую нигде не использую forward_list.

U>мой код собирается в VS2015 U1 без ворнингов и ошибок при Level=3, toolset v140, Debug/Win32

знаешь, этот код и у меня компилится %)

U>гипотеза: ты хачишь
Автор: niXman
Дата: 16.02.16
студию, как следствие, ломаешь

не, я пока не успел этого сделать =)

U>ну или U1 не поставил

а как проверить?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: MSVC2015, странные ошибки %)
От: uzhas Ниоткуда  
Дата: 16.02.16 11:46
Оценка:
Здравствуйте, 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

Re[4]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 13:55
Оценка:
Здравствуйте, 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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[5]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 14:00
Оценка:
Здравствуйте, niXman, Вы писали:

X>пытаюсь разобраться, откуда этот баг берется...

а как можно понять, откуда этот хидер инклюдится?

gcc хотя бы выводит(в подобном случае вывел бы) список файлов в оратном порядке откуда этот хидер инклюдится.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[6]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 14:14
Оценка:
и вот такой странный пример:

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 // <<<<<<<<<<<<<<<<<<<< 1215
        if (this == &_Right)
            ;    // same object, do nothing
        else if (this->_Getal() == _Right._Getal())
            {    // same allocator, swap control information
            this->_Swap_all(_Right);
            _Swap_adl(this->_Myhead(), _Right._Myhead());
            }

        else if (_Alty::propagate_on_container_swap::value)
            {    // swap allocators and control information
            this->_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

template<class _Ty,
    class _Alloc> inline
    void swap(forward_list<_Ty, _Alloc>& _Left,
        forward_list<_Ty, _Alloc>& _Right)
        _NOEXCEPT_OP(_NOEXCEPT_OP(_Left.swap(_Right))) // <<<<<<<<<<<<<<<<<<<< 1564
    {    // swap _Left and _Right lists
    _Left.swap(_Right);
    }
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[7]: MSVC2015, странные ошибки %)
От: watchmaker  
Дата: 16.02.16 14:35
Оценка: 3 (1)
Здравствуйте, niXman, Вы писали:

X>и вот так:

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


Да у тебя просто в коде где-то написано
#define _NOEXCEPT_OP

Новая реинкарнация старого прикола
#define true false
Re[8]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 14:46
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>Да у тебя просто в коде где-то написано
#define _NOEXCEPT_OP

поиск по проекту и зависимостям ничего не нашел.
к тому же, если бы оно действительно было так, то препроцессор бы говорил, что оно уже задефайнено. разве нет?

в хидерах студии оно задефайнено так:
 #if _HAS_EXCEPTIONS
  #define _NOEXCEPT    noexcept
  #define _NOEXCEPT_OP(x)    noexcept(x)
 #else /* _HAS_EXCEPTIONS */
  #define _NOEXCEPT    throw ()
  #define _NOEXCEPT_OP(x)
 #endif /* _HAS_EXCEPTIONS */
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[9]: MSVC2015, странные ошибки %)
От: watchmaker  
Дата: 16.02.16 14:52
Оценка: 9 (1) +1
Здравствуйте, niXman, Вы писали:


W>>Да у тебя просто в коде где-то написано
#define _NOEXCEPT_OP

X>поиск по проекту и зависимостям ничего не нашел.

Вывод препроцессора покажи.
Re[10]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 15:25
Оценка: :)))
Здравствуйте, watchmaker, Вы писали:

W>Вывод препроцессора покажи.

точно!
только не _NOEXCEPT_OP передефайнен, а #define noexcept был когда-то задефайнен как воркароунд для msvc2013. стыдно, стыдно
    _Myt& operator=(_Myt&& _Right)
        (_Alty::is_always_equal::value && is_nothrow_move_assignable<_Pr>::value)
#line 144 "c:\\program files (x86)\\microsoft visual studio 14.0\\vc\\include\\set"
        {    
        _Mybase::operator=(::std:: move(_Right));
        return (*this);
        }


спасибо огромное программеское
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[11]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.02.16 15:33
Оценка:
все ошибки пропали(ох и олух же я %)).
вот только не понимаю, почему msvc2015 раскрывает этот блок?:
#if __cplusplus < 201103L
#    define noexcept
#endif // __cplusplus < 201103L
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: MSVC2015, странные ошибки %)
От: szag  
Дата: 16.02.16 15:39
Оценка:
Здравствуйте, niXman, Вы писали:

X>это чтож получается, STL, входящая в поставку MSVC2015, не рабочая?

X>или я что-то делаю не так?
недавно сталкнулись с точно такой же проблемой при прикручивании 3rdparty библиотеки к проекту. Оказалось, что библиотека переопреляла макрос noexcept стлевский и много чего в стл точно вот так не компилилось.
Re[12]: MSVC2015, странные ошибки %)
От: PM  
Дата: 17.02.16 06:29
Оценка: +1
Здравствуйте, niXman, Вы писали:

X>все ошибки пропали(ох и олух же я %)).

X>вот только не понимаю, почему msvc2015 раскрывает этот блок?:
X>
X>#if __cplusplus < 201103L
X>#    define noexcept
X>#endif // __cplusplus < 201103L
X>


Потому что в MS считают, что C++11 до сих пор полностью не реализован Версия компилятора определена в _MSC_VER
Re[13]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 17.02.16 13:37
Оценка:
Здравствуйте, 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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[14]: MSVC2015, странные ошибки %)
От: uzhas Ниоткуда  
Дата: 17.02.16 14:20
Оценка:
Здравствуйте, niXman, Вы писали:

X>что вообще значат все эти mt-gd,mt-s,mt-sgd ?

X>и откуда студия знает какую либу линковать? я ей нигде не говорил что нужно линковаться с бустом.

check boost\config\auto_link.hpp
Re[15]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 17.02.16 14:39
Оценка:
Здравствуйте, uzhas, Вы писали:

U>check boost\config\auto_link.hpp

жуть как все сложно %)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[15]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 17.02.16 14:44
Оценка:
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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 17.02.2016 14:44 niXman . Предыдущая версия .
Re[16]: MSVC2015, странные ошибки %)
От: niXman Ниоткуда https://github.com/niXman
Дата: 17.02.16 14:54
Оценка:
Здравствуйте, niXman, Вы писали:

X>чот не въезжаю, в чем разница между g и d?

ааа, g это про хостовый рантайм, а d про буст %)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.