不能在 MIDL 3 中使用 [noexcept]

Cannot use [noexcept] in MIDL 3

在今年的 Build Talk C++/WinRT 2.0: Faster and smarter in the open, Kenny Kerr demonstrates the use of the [noexcept] attribute in IDL 中,通过消除 ABI 中的异常处理为编译器提供更好的优化机会。

我自己尝试了这个,但是,我最终遇到了 MIDL 编译器错误。以下精简的 IDL 文件

namespace NS
{
    interface IMyInterface
    {
        [noexcept] String DoStuff();
    };
}

产生以下诊断输出:

error MIDL2025: [msg]syntax error [context]: expecting . near "]"
error MIDL2009: [msg]undefined symbol [context]: noexcept.String
error MIDL2025: [msg]syntax error [context]: expecting ] or , near "DoStuff"
error MIDL2025: [msg]syntax error [context]: expecting . near "("
error MIDL2026: [msg]cannot recover from earlier syntax errors; aborting compilation

我是不是做错了什么,或者 [noexcept] 属性在 Visual Studio (16.1.4) 或 Windows SDK (10.0.4) 的 GA 版本中尚不可用。 18362.0)?

您需要更新版本的 MIDLRT。此功能目前在 Windows SDK 的内部版本中可用,并将随 Windows 的下一个主要更新一起提供。