使用模板在代码中可视化 2D 和 3D 形状

Visualize 2D and 3D shapes in code using templates

我记得有一个库(我想是一个 header)基于模板和运算符重载,允许在代码中可视化 2D 和 3D 形状,表达式如下:

assert( (I-----o
         |     |
         o-----I).area() == (I---o
                             |   |
                             |   |
                             o---I).area() );

还有更复杂的 3D 形状。

我有一个 link 到这个图书馆,但找不到 link...(我可能已经为它添加了书签,但找不到书签)。 Google 也没有太大帮助,至少对我的搜索关键字没有帮助。

有人知道我在说什么吗?

感谢 Story Teller,link 是: http://www.eelis.net/C++/analogliterals.xhtml

这里有一个叉子: https://github.com/Quuxplusone/analog-literals

一些实际代码示例:

  unsigned int c = ( o-----o
                     |     !
                     !     !
                     !     !
                     o-----o ).area;

  assert( c == (I-----I) * (I-------I) );

  assert( ( o-----o
            |     !
            !     !
            !     !
            !     !
            o-----o ).area == ( o---------o
                                |         !
                                !         !
                                o---------o ).area );

以及 3D 形状:

  assert( top( o-------o
               |L       \
               | L       \
               |  o-------o
               |  !       !
               !  !       !
               o  |       !
                L |       !
                 L|       !
                  o-------o ) == ( o-------o
                                   |       !
                                   !       !
                                   o-------o ) );

  assert( ( o-------------o
            |L             \
            | L             \
            |  L             \
            |   o-------------o
            |   !             !
            !   !             !
            o   |             !
             L  |             !
              L |             !
               L|             !
                o-------------o ).volume == ( o-------------o
                                              |             !
                                              !             !
                                              !             !
                                              o-------------o ).area
                                                   * int(I-------------I) );

它在其他 SO 帖子中提到,添加到问题的评论中。