从reddit/hackernews/lobsters/meetingcpp摘抄一些c++动态
周刊项目地址|在线地址 |知乎专栏 | 腾讯云+社区 |
欢迎投稿,推荐或自荐文章/软件/资源等
可以贴在下一期草稿里 链接
2022 08 19
标准委员会动态/ide/编译器信息放在这里
编译器信息最新动态推荐关注hellogcc公众号 本周更新 2022-08-17 第163期
类似folly::Poly
代码在https://github.com/microsoft/proxy
std::expected<std::vector<int>, Status> ReadData()
{
if (!HasAcccess())
return std::unexpected<Status> { Status::AccessDenied };
if (OpenConnection() != 0)
return std::unexpected<Status> {Status::DataSourceError};
if (Fetch() != 0)
return std::unexpected<Status> {Status::DataError};
std::vector<int> data;
data.push_back(42);
return data;
}
相当于 StatusWith<T>
这种组件
void report_error();
[[gnu::cold]] void report_error_cold();
void logic();
/*
cold(bool):
test edi, edi
jne .LBB0_1
jmp logic()
.LBB0_1:
jmp report_error_cold()
*/
auto cold(bool error) {
if (error) {
report_error_cold();
return;
}
logic();
}
/*
normal(bool):
test edi, edi
je .LBB1_2
jmp report_error()
.LBB1_2:
jmp logic()
*/
auto normal(bool error) {
if (error) {
report_error();
return;
}
logic();
}
/*
unlikely(bool):
test edi, edi
jne .LBB2_1
jmp logic()
.LBB2_1:
jmp report_error()
*/
auto unlikely(bool error) {
if (error) [[unlikely]] {
report_error();
return;
}
logic();
}
对代码优化有点帮助。之前也介绍过
对比了一下各种atomic 锁之类的差异
看个乐
这个优化了解一下
// #embed 支持
//#embed </path/to/file.txt>
//constexpr 部分支持
// not allowed in c23 :(
//constexpr int get_value() {
// return 42;
//}
// allowed in c23!
constexpr int universe_and_everything = 42;
// [[attributes]]支持
[[nodiscard]] int get_value();
// deprecated, fallthrough, maybe_unused, nodiscard, noreturn
// 未命名参数
int do_work(int x, int)
{
return x * 23;
}
// 类型枚举
enum MyEnum : char {
x,
y
};
// #6 __has_include
#if __has_include("somefile")
#include("somefile");
#endif
解不出bug要被开了