gpt4 book ai didi

c++ - 我可以用一些宏恢复 MSVC 16.6 中删除的 std::result_of 吗?

转载 作者:行者123 更新时间:2023-12-01 14:15:57 25 4
gpt4 key购买 nike

C++20 模式下的 MSVC 16.6 移除了在 C++20 标准中移除的 result_of。我完全赞成做道德上正确的事情,但我使用的许多第 3 方库(example)都失败了。

有时 MSVC 允许用户定义一个定义,以便仍然启用已删除的功能。是否可以为 result_of 执行此操作?我已经尝试过 _HAS_FEATURES_REMOVED_IN_CXX20,它似乎可以工作,但宏以 _ 开头的事实让我感到害怕,这表明它可能是内部 MSVC 机制,而不是用户应该设置的东西。

最佳答案

定义 _HAS_DEPRECATED_RESULT_OF_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING 应该更精细地恢复 result_of 并关闭其弃用警告。

_HAS_FEATURES_REMOVED_IN_CXX20_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS 应该对在 C++20 中退役的所有 C++17 功能做同样的事情。

鉴于过去的历史,这些“弃用覆盖”现在和 future 一段时间内使用应该相对安全。以下是来自 MS sanctioned blog 的较旧报价(关于 VS 2017) .

5. (Important!) It’s very likely that you’ll encounter source breaking changes in third-party libraries that you can’t modify (easily or at all). We try to provide escape hatches so you can restore removed features or silence deprecation warnings and get on with your work, but first, please report such issues to the relevant library maintainers. By helping them update their code, you’ll help many more C++ programmers just like you.

关于c++ - 我可以用一些宏恢复 MSVC 16.6 中删除的 std::result_of 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61979425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com