• Re: 看了网上讲C++20 coroutine的十几篇介绍文章,竟然还是云里

    我一直在等待coroutine和c++20。

    自己的手头练习的project都停下来了,准备学习这个大monster。

    今天 11:05
  • Re: 是不是越受过穷越自私凶狠

    错误在于总是把人划为非黑即白。

    穷肯定生计,否则就穷死了,但不一定是奸计;富不见得有心,有心的也有黑心良心。

    咬牙切齿说出非黑即白的话

    先不论话的对错,应该先注意说话人是否带着情绪。

    今天 03:24
  • Re: Re:一个Release版的BUG

    都去特快发震惊体文章涨分快。

    【 在 z16166 的大作中提到: 】

    : 什么编译器、什么版本,也没说呀

    : 简单说,就是不求甚解,没追求,哈哈,激将一下

    08月01日
  • Re: 友妻病故,留有一女,寻妈

    找个后妈对孩子真是一种无形的压力。

    然而对后妈难道不是无形的压力?管教不严说人不上心,管教太严说人虐待。

    真是个双输局。

    我经常想过这个问题,如果某一天我变成单身了,我就不结婚直到孩子能直立。

    07月29日
  • Re: 英特尔外包声明为美国主导先进制造的时代画上句号,屏幕CPU

    美帝什么时候封杀台积电。

    毕竟干过了INTEL就算得上国安威胁了。

    07月29日
  • Re: 县城老师真赚钱,秒杀帝都

    我认识的老师补课,一个暑假一个学生才1000块一科目。20节课。

    学生40~60个,不考虑熟人关系户领导子女。

    现在都是刷题战术,老师补课成绩提高了自己不仅赚补课费,还赚绩效工资。

    效果很扎实,比校外补课班好多了。

    所以说一刀切也不是好事,只能让经济实力差一些的家庭更加失去竞争力。

    07月26日
  • Re: 每天要是心情太好就来一下本版

    我起这个网名不是因为cadence的allegro,而是有个allegro的图形包。

    但是凑巧的是我现在的确在cadence工作。

    【 在 kof94 的大作中提到: 】

    : id不错,让人回忆起很多年前的cadence

    07月25日
  • 每天要是心情太好就来一下本版

    吸收一些负能量,一天就阴暗了。

    我感觉既然开始混本版了,就别指望啥纯纯的爱了

    也别指望夫妻交心了,凑合过。

    过不下去也可以离了去约啊。

    这啥时代了。

    07月25日
  • Re: [讨论]自作主张给老婆买了双鞋,鞋码大了,被骂了一中午了

    见世面。。。

    07月25日
  • Re: 一直把C++当作带类的C使用

    这没什么问题。

    07月25日
  • how to compress a permutation?

    For a permutation 0 ~ N, for big cases N can be hundreds billions.

    How to compress it before send?

    It's special because we know it's a permutation.

    But it's so random that no way to find a method to make it generally helpful?

    07月22日
  • Re: 历史上的屠夫!张献忠

    我看说法是之前没杀人,后来蜀中和南明政权联系上了,蜀民颇有反意,然后就激活了这魔王的杀欲。

    07月21日
  • Re: 关于copy elision和move ctor

    我觉得并不是编译优化导致的NRVO

    当一个object被construct的时候确定自己是要被返回的那个

    编译器就可以在返回地址上直接构造

    【 在 hyperLee 的大作中提到: 】

    : 那我要是在对象的ctor里边干点与执行顺序相关的事,岂不是分分钟出错?

    : 然而事实上这么做根本不会出错。这是得基本遵守的规则。

    : 反正要触发nrvo,最好把返回对象定义在第一行,十分稳妥。

    : ...................

    07月19日
  • Re: 殷姓男宝求起名建议,采纳后奉上200话费聊表谢意。

    殷傲天哈哈哈哈

    来个中性点的:殷巧

    07月19日
  • Re: 关于copy elision和move ctor
    loading ...

    我用自己电脑编译结果不是,已然回复如上。

    然后用了一下online gcc,c++14,居然buffer是一样的,不知道是否调用了move:

    http://cpp.sh/4iaa4

    如果把容器换成vector的话那buffer就是不一样的:

    http://cpp.sh/6kcsb

    【 在 libgcc 的大作中提到: 】

    : 为什么我试了下case5是move的?

    : string的data()返回的地址是一样的

    07月18日
  • Re: 关于copy elision和move ctor
    loading ...

    如果用clang编译的话,的确这段代码能触发NRVO

    这个东西是个实现定义的。

    【 在 hyperLee 的大作中提到: 】

    : 要触发nrvo, 返回值写在第一行, 然后return语句和返回值处于同一block.

    : 如果代码有if动态分支,你在if里边返回的时候触发不了nrvo.

    : 我感觉nrvo是一个编译期行为, 编译器如果无法预测你的分支,nrvo就不可能.

    : ...................

    07月18日
  • Re: 关于copy elision和move ctor

    不是的。

    string f(bool x)

    {

    string s = "1111111111111111111111111111111111111111111111111111111111111";

    if(x){

    std::cout << "var address: " << &s << std::endl;

    std::cout << "buf address: " << (void *)(s.data()) << std::endl;

    return s;

    }

    return string("222222222222222222222222222222222222222222222222222222222222222");

    }

    string g(bool x)

    {

    const string s = "1111111111111111111111111111111111111111111111111111111111111";

    if(x){

    std::cout << "var address: " << &s << std::endl;

    std::cout << "buf address: " << (void *)(s.data()) << std::endl;

    return s;

    }

    return string("222222222222222222222222222222222222222222222222222222222222222");

    }

    string r()

    {

    const string s = "1111111111111111111111111111111111111111111111111111111111111";

    std::cout << "var address: " << &s << std::endl;

    std::cout << "buf address: " << (void *)(s.data()) << std::endl;

    return s;

    }

    int main()

    {

    {

    std::cout << "call f(true), expect move ctor" << std::endl;

    string s = f(true);

    std::cout << "var address: " << &s << std::endl;

    std::cout << "buf address: " << (void *)(s.data()) << std::endl;

    }

    std::cout << "===============" << std::endl;

    {

    std::cout << "call g(true), expect copy ctor" << std::endl;

    string s = g(true);

    std::cout << "var address: " << &s << std::endl;

    std::cout << "buf address: " << (void *)(s.data()) << std::endl;

    }

    std::cout << "===============" << std::endl;

    {

    std::cout << "call r(), expect NRVO" << std::endl;

    string s = r();

    std::cout << "var address: " << &s << std::endl;

    std::cout << "buf address: " << (void *)(s.data()) << std::endl;

    }

    return 0;

    }

    $ g++ t.cpp -std=c++17

    输出:

    call f(true), expect move ctor

    var address: 0x7fffc4ea36c0

    buf address: 0x7fffbd418280

    var address: 0x7fffc4ea3720

    buf address: 0x7fffbd418280

    ===============

    call g(true), expect copy ctor

    var address: 0x7fffc4ea36c0

    buf address: 0x7fffbd418280

    var address: 0x7fffc4ea3720

    buf address: 0x7fffbd4182d0

    ===============

    call r(), expect NRVO

    var address: 0x7fffc4ea3720

    buf address: 0x7fffbd4182d0

    var address: 0x7fffc4ea3720

    buf address: 0x7fffbd4182d0

    case-5对应的是g(true),你可以看到变量和buf地址都不一样。

    【 在 libgcc 的大作中提到: 】

    : 为什么我试了下case5是move的?

    : string的data()返回的地址是一样的

    07月18日
  • 关于copy elision和move ctor
    loading ...

    I read again the NRVO carefully, seems I mis-understand the NRVO in case 5.

    NRVO needs to know which variable to return at construction.

    But still I have question for case-5, const effectively blocks the move ctor.

    Grammarly we can’t move a const lvalue by std::move().

    And compiler can use move over a dying non-const lvalue to construct the returned object.

    But why the compiler doesn’t optimize to use the move over a dying const lvalue?

    Just don’t want give us a big ooops? What’s your understand?

    Thanks,

    xxxx

    code排版太乱。

    我重新截了个图。

    07月17日
  • Re: 大家都是怎么学C++17的,市面好像没有关于C++17的书籍

    stackoverflow

    07月15日
  • Re: 儿子26岁了,母亲出来相亲,要求男方“没儿子”

    女儿为什么没有继承权?请给出法律出处。

    07月15日