前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 中文周刊 第82期

C++ 中文周刊 第82期

作者头像
王很水
发布2022-10-30 12:02:33
2260
发布2022-10-30 12:02:33
举报

C++ 中文周刊 第82期

reddit/hackernews/lobsters/meetingcpp/purecpp/知乎/等等摘抄一些c++动态

周刊项目地址|在线地址 |知乎专栏

腾讯云+社区

弄了个qq频道,手机qq点击进入

欢迎投稿,推荐或自荐文章/软件/资源等

可以贴在下一期草稿里 草稿链接

2022 1002

大家国庆快乐


资讯

标准委员会动态/ide/编译器信息放在这里

编译器信息最新动态推荐关注hellogcc公众号 本周更新 2022-01-05 第131期

文章

除了贵和积热之外没啥缺点。zen4太贵了。本来打算双十一拼一台。看样子只能考虑明年618再拼了。

今年可以双十一攒个5950x,加b550不到四千。内存也便宜

代码语言:javascript
复制
struct s {
  static constexpr auto operator()() { return 1; }
};
auto l = [] static { return 2; };

static_assert(3 == s{}() + l());

static_assert(3 == s::operator()() +
         decltype(l)::operator()());

没啥说的。补全一下

有了ssize支持,可以不考虑符号了,

代码语言:javascript
复制
for (int i = 0; i < ssize(vec); ++i)
    std::cout << i << ": " << vec[i] << '\n';

range遍历 + 索引

代码语言:javascript
复制
int main() {
    std::vector vec { 1, 2, 3, 4, 5};
    for (int i = 0; const auto& elem : vec)
        std::cout << i++ << ": " << elem << '\n';
}

说实话有点别扭,没有go那种 i, v = range那种感觉好, 聊胜于无吧

组合view

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector vec { 1, 2, 3, 4, 5};
    for (int i = 0; const auto& elem : vec | std::views::reverse)
        std::cout << i++ << ": " << elem << '\n';
}

使用range view算法

代码语言:javascript
复制
void printReverse(auto cont) {
    std::ranges::for_each(cont | std::views::reverse, 
        [i=0](const auto& elem) mutable {
            std::cout << i++ << ' ' << elem << '\n';
        }
    );
}

看不懂

科普一下

还是科普

这个其实就是之前那个英语博客的转述

草药老师关于他cppfront语法的一些需求的实现。没细看

介绍format以及llvm的支持程度。基本都支持除了chrono

内联场景的前缀字符串前缀数组可能会被编译器优化掉,减少二进制大小

比如

代码语言:javascript
复制
    const char * str1 = "dear friend";
    const char * str2 = "dear friend";
    return str1 == str2;
代码语言:javascript
复制
void oops(std::vector<std::string>& v)
{
    set_name(v.front.c_str());
    //         ^^^^^ error: A pointer to a bound function
    //         may only be used to call the function
}

忘记加括号了

有些功能比如move迭代器之类的存在用不好的场景。导致莫名其妙的影响性能。

视频

类型擦除的方法。之前也讲过. 就是藏函数指针

代码语言:javascript
复制
class animal_view {
 public:
  template <typename Speakable>
  explicit animal_view(const Speakable &speakable)
      : object{&speakable},
        speak_impl{// create a lambda that knows how to unpack the stored object
                   [](const void *obj) {
                     return static_cast<const Speakable *>(obj)->speak();
                   }} {}

  void speak() const { speak_impl(object); }

 private:
  // void * to object of unknown type
  const void *object;

  // function pointer that knows how to use unknown type
  void (*speak_impl)(const void *);
};

void do_animal_things(animal_view animal) { animal.speak(); }

int main() {
  struct Cow {
    void speak() const { fmt::print("Mooo\n"); }
  };

  struct Sheep {
    void speak() const { fmt::print("Baaa\n"); }
  };
  do_animal_things(animal_view{Cow{}});
  do_animal_things(animal_view{Sheep{}});
}

开源项目需要人手

  • asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群384042845和作者对线
  • pika 一个nosql 存储, redis over rocksdb,非常需要人贡献代码胖友们, 感兴趣的欢迎加群294254078前来对线

新项目介绍/版本更新

  • cppq 一个基于redis的任务队列

看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持!

本文永久链接

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ 中文周刊 第82期
    • 资讯
      • 文章
        • 视频
          • 开源项目需要人手
            • 新项目介绍/版本更新
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档