这个问题是关于C++ 20的[[likely]]
/[[unlikely]]
功能,而不是编译器定义的宏。
本文档(cppreference)仅给出了将其应用于switch-case语句的示例。 这个切换案例可以使用我的编译器(g++-7.2)完美地编译,因此我假定编译器已经实现了此功能,尽管当前C++标准中尚未正式引入该功能。
但是当我这样使用它们时:if (condition) [[likely]] { ... } else { ... }
,我得到了一个警告:
那么,如何在if-else语句中使用这些属性?
最佳答案
根据Jacksonville’18 ISO C++ Report的示例,该语法是正确的,但似乎尚未实现:
if (a>b) [[likely]] {
10.6.6 Likelihood attributes [dcl.attr.likelihood] draft