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

问题描述

我还记得一个基于模板和运算符重载的库(我认为是单个标头),该库允许可视化代码中的2D和3D形状,例如:

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

还有3D形状的更复杂的东西。

我有一个到此库的链接,但找不到链接...(我可能已将其添加为书签,但找不到书签)。 Google也没有太大帮助,至少在我的搜索关键字方面也没有。

有人知道我在说什么吗?

解决方法

感谢Story Teller,该链接为: 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帖子中也有提及,并在问题中添加了注释。