- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我没有什么好的解决办法。我有一段代码: #include #include #include #include #include #include #include #include
当 Callable 返回模板类型并收到以下错误 (clang++) 时,我正在尝试使用 result_of。我还提供了一个一切正常的简单案例。 错误: main.cpp:22:50: note: c
#include using namespace std; struct asd{ void f(); }; int f(); typedef typename result_of::typ
以下代码无法在 GCC 5.2 中编译: template result_of_t FuncCall(const FuncType &f, ArgTypes&... args) { retur
我正在尝试创建一个可延迟的调用对象。类似于(伪代码): template struct delayable_call { return-type-of-FN call(); //
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 7
我正在尝试在仿函数上使用 std::result_of。为什么我会得到这些结果? #include struct my_logical_not { template bool ope
这个问题我已经有一段时间了。假设我们有一个人为的功能: template std::result_of_t(???)> transform(F&& f) { static const int
通过 result_of 确定诸如 -int() 或 double()*double() 之类的结果的正确语法是什么? 失败 std::result_of::type std::result_of::
我想获得 std::make_tuple 为给定参数包返回的类型。到目前为止,我已经编写了以下代码: #include #include template struct unwrap_refwr
auto lambda = [](){ return 7; }; std::result_of::type val = lambda(); // 'val' : illegal use of typ
我听说 tr1::result_of 在 Boost 中被频繁使用...我想知道是否有 tr1::result_of 的任何好的(简单)用例我可以在家里使用。 最佳答案 result_of 的描述在
#include #include double f(int i) { return i+0.1; } struct F { public: dou
在 this answer我创建了一个类型特征: template using to_string_t = decltype(to_string(declval())); 这工作得很好,但我最初打算使
我想推断作为模板参数出现的函数的返回类型。考虑以下代码: #include struct Result {}; Result foo() { return Result{}; } template
我在玩游戏时注意到 std::result_of 的这种行为: struct Foo { int operator()(const int&) const { ... } char o
我使用的 HashMap 类型没有将其 KeyType 指定为公共(public)成员,只有 ValueType。检索 KeyType 的一种方法是使用 std::result_of与 HashMap
我认为这段代码是不言自明的,但基本上模板函数 ExecFunc 应该能够执行另一个函数并返回其结果。我知道我可以使用 decltype 而不是 result_of 获得类似的结果,但这个问题是为了理解
我向现有类添加了一个重载方法,这现在会导致我们的单元测试出现编译错误。 我已经用以下代码复制了这个问题: #include #include class Foo { public:
g++ -std=c++0x'ing std::result_of 后产生以下错误消息 error: ‘result_of’ in namespace ‘std’ does not name a ty
我是一名优秀的程序员,十分优秀!