前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 动态新闻推送 第40期

C++ 动态新闻推送 第40期

作者头像
王很水
发布2021-12-06 08:12:12
3070
发布2021-12-06 08:12:12
举报

C++ 动态新闻推送 第40期

reddit/hackernews/lobsters/meetingcpp摘抄一些c++动态

资讯

编译器信息最新动态本周更新 OSDT Weekly 2021-12-01 第126期

Qt Creator 6 released

文章

手把手教你写sender/receiver

核心想法就是这个

这个看个乐,代码

代码语言:javascript
复制
$ cat a.c
#include <arpa/inet.h>
#include <sys/socket.h>

#include <netinet/in.h>

#include <err.h>
#include <stdlib.h>

#define PORT 12345

int
main() {
	int sock;
  // 加这行就不报错了	socklen_t length, s_size;
	struct sockaddr_storage server;
	struct sockaddr_in6 *sin = (struct sockaddr_in6 *)&server;
  // 加这行也不报错 memset(sin, 0, sizeof(*sin));
	if ((sock = socket(PF_INET6, SOCK_STREAM, 0)) < 0) {
		err(EXIT_FAILURE, "socket");
		/* NOTREACHED */
	}

	if (inet_pton(PF_INET6, "::1", &(sin->sin6_addr)) != 1) {
		err(EXIT_FAILURE, "inet_pton");
		/* NOTREACHED */
	}

	sin->sin6_family = PF_INET6;
	sin->sin6_port = htons(PORT);

	if (bind(sock, (struct sockaddr *)sin, sizeof(*sin)) != 0) {
		err(EXIT_FAILURE, "bind");
		/* NOTREACHED */
	}

	return 0;
}
$ cc a.c
$ ./a.out
a.out: bind: Can't assign requested address
$ 

这个问题定位下来就是未初始化,解错了数据

代码语言:javascript
复制
switch (f)
{
    break; case Foo::Alpha:
        s += "is nothing";
    break; case Foo::Beta:
        s += "is important";
        f = Foo::Alpha;
    break; case Foo::Gamma:
        s += "is very important";
        f = Foo::Alpha;
    break; case Foo::Delta:
        s += "is not very important";
        f = Foo::Alpha;
}

哈哈,给我看笑了

代码语言:javascript
复制
#include <experimental/reflect>
#include <iostream>

namespace meta = std::experimental::reflect;

template<class... Ts>
struct print_enum {
  void operator()() {
    ((std::cout << meta::get_name_v<meta::get_type_t<Ts>> << ':' << meta::get_name_v<Ts> << std::endl), ...);
  }
};

enum class Trading { Quant, Lab };

int main() {
  std::cout << meta::get_name_v<reflexpr(Trading)> << std::endl; // prints Trading
  std::cout << meta::get_name_v<reflexpr(Trading::Quant)> << std::endl; // prints Quant
  std::cout << meta::get_name_v<reflexpr(Trading::Lab)> << std::endl; // prints Lab

  meta::unpack_sequence_t<print_enum, meta::get_enumerators_t<reflexpr(Trading)>>{}(); // prints Trading::Quant, Trading::Lab
}

之前说过,这个人的博客权重很高,讲了很多性能优化相关的东西

这里简单列一下

值得一看。看思路

作者说自己的parser库多么多么图灵完备

clang的libc++的deque的push_front在糟糕场景下可能会有O(logN)的效率,注意使用

博客内容是从代码汇编来分析到底耗时在哪里。没有展开看

介绍一些c的莫名其妙的细节,比如include可以当函数,数组是指针别名等等。这里就不展开了。还是不要知道的好

就是实现一个Status错误类型,所有函数都走这个不走异常 接口比较简单,点击直达

视频

cppcon2021出了个视频列表

太多了胖友们,根本看不完。我慢慢消化,可能放在下一期

一个simd实现的算法库,包括find(可以和下面那个简单的比一比),仓库地址

项目

看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!

本文永久链接

代码语言:txt
复制
     This site is open source. [Improve this page](https://github.com/wanghenshui/cppweeklynews/edit/dev/posts/040.md).
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ 动态新闻推送 第40期
    • 资讯
      • 文章
        • 视频
          • cppcon2021出了个视频列表
        • 项目
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档