• 廖熊猫
    2020-02-10
    c++里的泛型约束和java或者c#中的泛型约束很像,但是复杂了好多...不像后者只能约束泛型参数实现某一接口,c++可以通过很小的约束组合成需要的约束,感觉这就是函数式里面经常提的组合的力量吧

    作者回复: Java和C#的泛型约束都太弱了,只能是你需要做什么,而不能说你不可以做什么。另外,这种基于继承的约束是 跟 C++ 的鸭子类型方式背道而驰的:概念仍然是基于鸭子类型的,虽然是更形式化的鸭子类型——但它仍然是不使用继承体系的。

    
    
  • 胡闯歌
    2020-02-05
    吴老师,你好,我问一个与此文章无关的,一个GDB调试的问题:
    一个网络多线程服务,一个socket一个线程。有一个共享变量用boost的unordered_map,同步也用boost的unique_lock
    程序在运行时基本正常,但在gdb调试时只要打印共享变量(即使里面没有数据),就会收到SIGSEG,调试其它变量或用下面的步骤就没事
    1 handle SIGPIPE nostop noprint
    2 set print elements 0
    3 将共享的变量的类型变为 stl的map
    问题:
      这种情况产生的主要原因是什么,用了boost的 hash map吗,和屏蔽管道关系有多大?
    展开

    作者回复: 没遇到类似问题,不熟悉。建议到 Stack Overflow 上去问,最好描述清楚环境,并且有一个最小的测试程序。

    一般而言,网络程序和多线程程序要做好单元测试,也只有单元测试可以在调试器里顺利进行。完整系统的调试多靠记日志和分析。

     1
    
我们在线,来聊聊吧