V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
rushcheyo
V2EX  ›  C

整个 STL 都即将用 Concepts 重写有什么好处?

  •  
  •   rushcheyo · Feb 14, 2016 · 3126 views
    This topic created in 3735 days ago, the information mentioned may be changed or developed.

    除了报错信息更加友好以外,性能是增了还是减了?

    20 replies    2016-02-16 08:14:45 +08:00
    arrowna
        1
    arrowna  
       Feb 14, 2016
    谁来重写?哪里看到的消息?
    rushcheyo
        2
    rushcheyo  
    OP
       Feb 14, 2016
    @arrowna C++17 的提案都不看,没资格回答这个问题。
    orzfly
        3
    orzfly  
       Feb 14, 2016
    @rushcheyo 为什么不把消息出处、提案的链接也贴出来一下,方便对此不知情的人呢?
    rushcheyo
        4
    rushcheyo  
    OP
       Feb 14, 2016   ❤️ 1
    消息出处: https://www.reddit.com/r/cpp/comments/3dzv6i/eric_niebler_on_twitter_the_concepts_ts_was_voted/
    提案链接:暂不公开,但是可以看 Bjarne Stroustrup 的论文 Thoughts on C++17 中 Concepts 的部分: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4361.pdf
    rushcheyo
        5
    rushcheyo  
    OP
       Feb 14, 2016
    kotokz
        6
    kotokz  
       Feb 14, 2016
    compile 速度会有提升,最起码失败的更快了。
    rushcheyo
        7
    rushcheyo  
    OP
       Feb 14, 2016
    @kotokz 唔…… Compile 速度提升 GCC 的 Concepts 实现者已经提到了(他说大概 7 - 10x )。然而代码膨胀等方面呢?

    还有现在这个 Concepts ,与 abstract class 到底区别在哪? Abstract class 相比还更加灵活(因为有了继承的不同选择)。
    kotokz
        8
    kotokz  
       Feb 15, 2016
    @rushcheyo

    code bloat 最大的影响就是 complie time.
    dead code 会在 link 的时候 eliminate 掉

    concepts 是跟 template 有关系, abstract class 更多是 polymorphism
    northisland
        9
    northisland  
       Feb 15, 2016 via iPhone   ❤️ 3
    @arrowna 不知无害为君子

    @rushcheyo 知之无害为小人
    rushcheyo
        10
    rushcheyo  
    OP
       Feb 15, 2016
    @northisland
    1. 你的诗句引用错了,鉴于有人批判我咬文嚼字,我就不多说了。
    2. 我说话的语气取决于对方说话的语气。
    bombless
        11
    bombless  
       Feb 15, 2016 via Android
    concept 很重要,不了解的人可以说是还不了解 cpp 有多屌。 concept 解决的问题跟 abstract class 解决的问题没啥关联,没有可比性

    不只是报错消息,写模板代码的思路会小有变化,写的时候思路更清晰了。

    不过多数人并不写模板代码,对这些人来说的确主要是报错信息变了
    minsheng
        12
    minsheng  
       Feb 15, 2016 via iPhone   ❤️ 1
    不就一个 type class ……能有多屌,看看 Haskell 加了 type class 后多出哪些东西就好了
    hqs123
        13
    hqs123  
       Feb 15, 2016
    请教楼主 Concepts 是什么东西?
    rushcheyo
        14
    rushcheyo  
    OP
       Feb 15, 2016 via iPhone
    @hqs123 麻烦你自己读 cppreference ,或者维基百科。
    raysonx
        15
    raysonx  
       Feb 15, 2016 via Android
    C++又在加新特性了。。。
    rushcheyo
        16
    rushcheyo  
    OP
       Feb 15, 2016
    @raysonx C++17 以后,不但 C++ 是一门崭新的语言, STL 也会焕然一新(重写)。
    到时候再接受新特性,不妨现在就开始研究学习。
    拒绝历史潮流的人会被碾碎。
    breeswish
        17
    breeswish  
       Feb 15, 2016
    回答问题:这和运行时性能没关系,运行时性能不会增也不会减;当然,编译时会减少
    提出问题:在哪里有说“整个 STL 都即将用 Concepts 重写”
    rushcheyo
        18
    rushcheyo  
    OP
       Feb 15, 2016
    @breeswish
    然而 traits 能够优化了。其实原来就能写成:
    #if is_same<..., ...>

    #elif is_same<..., ...>
    ...
    #endif
    以消除函数调用的开销。
    你提的问题 4# 写了。
    rushcheyo
        19
    rushcheyo  
    OP
       Feb 15, 2016
    @breeswish is_same 可以修改定义为这样以支持:
    template <typename T, typename U>
    constexpr const bool is_same = false;

    template <typename T>
    constexpr const bool is_same<T, T> = true;
    wbsdty331
        20
    wbsdty331  
       Feb 16, 2016
    有的公司不让用.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   925 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 20:37 · PVG 04:37 · LAX 13:37 · JFK 16:37
    ♥ Do have faith in what you're doing.