визуальное Новое обновление VS C ++ делает объявленный код форсированного продвижения не компилируемым! Что ты можешь сделать?

Это новые ошибки, которые я получаю, когда пытаюсь использовать созданный мной проект, использующий Boost в качестве статически связанных библиотек. Но сам по себе включает в себя один крик в сборнике. Пожалуйста посоветуй.

Буст версия: 1.68

Версия Visual Studio (Сообщество): 15.8.0, Последнее обновление: 14 августа 2018 г.

   Severity Code    Description Project File    Line    Suppression State
Error   C4643   Forward declaring 'allocator' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   119
Error   C4643   Forward declaring 'allocator' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   119
Error   C4643   Forward declaring 'allocator' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   119
Error   C4643   Forward declaring 'allocator' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp   30
Error   C4643   Forward declaring 'allocator' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   119
Error   C4643   Forward declaring 'allocator' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp   30
Error   C4643   Forward declaring 'allocator_arg_t' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp 49
Error   C4643   Forward declaring 'allocator_arg_t' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp 49
Error   C4643   Forward declaring 'basic_istream' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp    47
Error   C4643   Forward declaring 'basic_istream' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp    47
Error   C4643   Forward declaring 'basic_ostream' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp    44
Error   C4643   Forward declaring 'basic_ostream' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp    44
Error   C4643   Forward declaring 'basic_string' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp    120
Error   C4643   Forward declaring 'basic_string' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp    120
Error   C4643   Forward declaring 'basic_string' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp    120
Error   C4643   Forward declaring 'basic_string' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp    120
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\move\detail\iterator_traits.hpp   33
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\move\detail\iterator_traits.hpp   33
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp  43
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp   30
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\move\detail\iterator_traits.hpp   33
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\move\detail\iterator_traits.hpp   33
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp  43
Error   C4643   Forward declaring 'bidirectional_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp   30
Error   C4643   Forward declaring 'bitset' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp  143
Error   C4643   Forward declaring 'bitset' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp  143
Error   C4643   Forward declaring 'bitset' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp  143
Error   C4643   Forward declaring 'bitset' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp  143
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 122
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 122
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 122
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp 39
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp  34
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 122
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\container\detail\std_fwd.hpp 39
Error   C4643   Forward declaring 'char_traits' in namespace std is not permitted by the C++ Standard.boost-root\boost\interprocess\detail\std_fwd.hpp  34
Error   C4643   Forward declaring 'complex' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 127
Error   C4643   Forward declaring 'complex' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 127
Error   C4643   Forward declaring 'complex' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 127
Error   C4643   Forward declaring 'complex' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp 127
Error   C4643   Forward declaring 'deque' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   131
Error   C4643   Forward declaring 'deque' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   131
Error   C4643   Forward declaring 'deque' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   131
Error   C4643   Forward declaring 'deque' in namespace std is not permitted by the C++ Standard.boost-root\boost\detail\container_fwd.hpp   131
Error   C4643   Forward declaring 'forward_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\move\detail\iterator_traits.hpp 32
Error   C4643   Forward declaring 'forward_iterator_tag' in namespace std is not permitted by the C++ Standard.boost-root\boost\move\detail\iterator_traits.hpp 32

1

Решение

Стыдно, действительно … А пока проверьте это:

Исправления ошибок и изменения поведения в Visual Studio 2017 версии 15.8

пересылать объявления и определения в пространство имен std

Стандарт C ++ не позволяет пользователю добавлять предварительные объявления или определения в пространство имен std. Добавление объявлений или определений в пространство имен std или в пространство имен в пространстве имен std теперь приводит к неопределенному поведению.

Когда-нибудь в будущем Microsoft переместит место, где
некоторые типы STL определены. Когда это произойдет, это сломает существующие
код, который добавляет прямые объявления в пространство имен std. Новое предупреждение,
C4643, помогает определить такие проблемы с источником. Предупреждение включено
в /дефолт режим и по умолчанию выключен. Это повлияет на программы, которые
составлены с / Wall или же / WX

От Вот.

Чтобы избежать этой ошибки до тех пор, пока внутри соответствующих заголовков не будут сделаны дальнейшие изменения для соответствия, добавьте это перед включением их:

#pragma warning( disable : 4643 )

Это решит это на данный момент даже для кода, создаваемого из Unreal Engine 4.

Для обычной компиляции MSVC, вручную или из VS, убедитесь, что вы не компилируете с /WX как это превратит предупреждения в ошибки.

Кроме того, я не рекомендую это как долгосрочное решение, но если вы просто хотите убедиться, что вы можете вернуть его к успешной сборке, вы можете отключить /permissive флаг компилятора, который был введен в 15.3 для обеспечения соблюдения стандартного соответствия.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]