abseil / abseil-cpp

Abseil Common Libraries (C++)
https://abseil.io
Apache License 2.0
15.05k stars 2.62k forks source link

Deprecation warnings with Visual Studio 17.3 #1251

Open Sovak opened 2 years ago

Sovak commented 2 years ago

Describe the bug

Upon upgrading the Visual Studio to 17.3 I get the following warnings:

warning C4996: '_Header_ciso646': warning STL4036: is removed in C++20. You can define _SILENCE_CXX20_CISO646_REMOVED_WARNING or _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS to acknowledge that you have received this warning.

abseil-cpp/absl/meta/type_traits.h(125,50): warning C4996: 'std::aligned_storage<_Len,_Align>': warning STL4034: std::aligned_storage and std::aligned_storage_t are deprecated in C++23. Prefer alignas(T) std::byte t_buff[sizeof(T)]. You can define _SILENCE_CXX23_ALIGNED_STORAGE_DEPRECATION_WARNING or _SILENCE_ALL_CXX23_DEPRECATION_WARNINGS to acknowledge that you have received this warning. 60>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\include\type_traits(1070,1): message : see declaration of 'std::aligned_storage'

Steps to reproduce the bug

Build abseil with latest MSVC

What version of Abseil are you using? 0c92330442d6b1be934e0407115c8084250ef347

What operating system and version are you using

Latest Windows 10

What compiler and version are you using?

MSVC 14.33.31629 (Visual Studio 17.3)

What build system are you using?

MSBuild with CMake 3.21.4

derekmauro commented 2 years ago

Fixed by 3e54e87f020c71440217ce2ad382b800c4658970 yesterday.

derekmauro commented 2 years ago

Actually the first warning was fixed. The second needs a fix.

Sil3ntStorm commented 1 year ago

The ciso646 include seems to be still present in release 20220623.1, when can we expect a release that includes this fix?

derekmauro commented 1 year ago

We do releases approximately every 6 months.

Romain-Geissler-1A commented 1 year ago

Hi,

FYI, the second warning (about deprecated std::aligned_storage) is still present in the current release + the current development branches. Is it planned to at least silence it (with a pragma) if you don't immediately plan on re-writing this part of the code to not use this deprecated class ?

Edit: I have submitted a pull request in #1468 which works this around for gcc/clang (but not MSVC as I clearly now nothing about the Windows platform).

Cheers, Romain