在MSVC C ++中强制内联lambda

附庸风雅

下一个代码在CLang / GCC中编译,并成功内联lambda:

在线尝试!

#include <iostream>

int main() {
    int x = 0;
    auto f = [&]() __attribute__((always_inline)) {
        ++x;
    };
    f();
    std::cout << x;
}

但是__forceinline尽管已宣布在v16.7中实现,但最新MSVC(2019 v16.8.3)中的类似代码无法编译

在线尝试!

#include <iostream>

int main() {
    int x = 0;
    auto f = [&]() __forceinline {
        ++x;
    };
    f();
    std::cout << x;
}

抛出编译错误0305.cpp(5): error C3260: 'type': skipping unexpected token(s) before lambda body

真的还没有实施,还是我__forceinline在错误的地方使用?还有其他方法可以强制在MSVC中内联lambda吗?

在所有流行的编译器(例如CLang / GCC / MSVC)中,是否有某种方式可以不编译代码(并抛出编译错误),以防在某些地方使用给定的lambda而不进行内联?也确实__attribute__((always_inline))__forceinline使用用例都100%保证拉姆达肯定是内联?

内森·奥利弗

根据Jonathan Caves对功能请求的答复,未来支持的语法是

auto f = [&]() [[msvc::forceinline]] {
    ++x;
};

确实编译

看起来他们希望它符合C ++ 11中引入属性语法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何确定MSVC C ++中的内存分配?

来自分类Dev

在MSVC(Visual Studio)中模拟C函数

来自分类Dev

在MSVC(Visual Studio)中模拟C函数

来自分类Dev

MSVC支持的C子集

来自分类Dev

C ++避免或管理MSVC中的循环项目依赖项

来自分类Dev

在MSVC 2012中为Win XP构建C ++项目

来自分类Dev

调试信息会显示C ++ / MSVC中的代码吗?

来自分类Dev

C ++避免或管理MSVC中的循环项目依赖项

来自分类Dev

MSVC 中多个函数定义的强制解析

来自分类Dev

MSVC C++ ADL 错误?

来自分类Dev

在GCC中,Clang和MSVC是否有符合C ++ 98而不是C ++ 03的方法?

来自分类Dev

MSVC内联程序集内部函数调用

来自分类Dev

C ++多个版本的默认特殊成员函数-MSVC 2015中的错误

来自分类Dev

具有容器迭代器的c ++中的循环类型依赖性(GCC失败,而MSVC正常)

来自分类Dev

在MSVC中压缩后可能会损坏数据吗?(C ++)

来自分类Dev

MSVC ++ 14上C ++ 11中不可能快速的委托

来自分类Dev

GCC和MSVC中的C ++ utf-8文字

来自分类Dev

C ++ 20概念:MSVC的行外定义失败,但在GCC或clang中不行

来自分类Dev

在MSVC中压缩后可能会损坏数据吗?(C ++)

来自分类Dev

在MSVC中处理__attribute__

来自分类Dev

您如何阅读MSVC C ++链接错误

来自分类Dev

MSVC 2010是否符合C ++ 11标准

来自分类Dev

MSVC汇编函数自变量C ++与_asm

来自分类Dev

C#中的内联Lambda函数创建行为

来自分类Dev

带有msvc140的通用lambda

来自分类Dev

GCC / MSVC中与lambda转换构造函数的差异

来自分类Dev

如何将解决方案文件中的所有项目更改为 C++17 MSVC?

来自分类Dev

我们可以强制该函数在C ++中内联吗

来自分类Dev

在MSVC中自动生成FMA指令

Related 相关文章

热门标签

归档