# ddoc10

- `Foo`

  #### Declaration

  `struct `Foo`(T);
  struct `Foo`(T, U);`

  The foo

- `func1`

  #### Declaration

  `int `func1`(T)(T `x`);`

  This basic case doesn't work very well. The template signature is documented twice, but the function signature (argument names and return type) is not documented at all. This comment is also repeated twice.

- `func2`

  #### Declaration

  `int `func2`(T, U)(T `x`, U `y`);
  int `func2`(T)(T `x`);`

  This comment is also repeated twice, and the second function signature is not very well documented.

- `func2`

  #### Declaration

  `int `func2`()();`

  Separate overload item.

- `func3`

  #### Declaration

  `int `func3`(T, U)(T `x`, U `y`);
  int `func3`(T, U = int, V : long)(T `x`);`

  This used to work adequately and documented both `func3` templates simultaneously. Now, it documents the first template twice and no longer documents the function argument and return types.

- `map`

  #### Declaration

  `void `map`(char `rs`);
  void `map`(int `rs`);`

  blah

- `map2`

  #### Declaration

  `void `map2`()(char `rs`);
  void `map2`()(int `rs`);`

  blah

- `map3`

  #### Declaration

  `void `map3`(char `rs`);`

  blah http://www.map3.com `map3`

- `map4`

  #### Declaration

  `void `map4`(string s)(char `rs`);`

  blah http://www.map.com map

- `map5`

  #### Declaration

  `template `map5`(string s)`

  blah http://www.map.com map

- `bar6`

  #### Declaration

  `struct `bar6`;`

  blah

- `Foo7`

  #### Declaration

  `struct `Foo7`(T);`

  template bodies

  - `bar`

    #### Declaration

    `void `bar`();`

    Attempt two: Inside.

    #### Discussion

    Attempt one: Doc outside static if.

  - `abc`

    #### Declaration

    `static void `abc`();`

    the `abc` function should be static

- `Foo8`

  #### Declaration

  `abstract class `Foo8`;`

  show abstract

- `bug4878`

  #### Declaration

  `void `bug4878`(string `a` = ")");`

  `a` stray ) mustn't foul the macros

- `S`

  #### Declaration

  `struct `S`;`

  - `this`

    #### Declaration

    `pure nothrow this(long `ticks`) const;`

  - `foo`

    #### Declaration

    `pure nothrow void `foo`(long `ticks`) const;`

- `f10`

  #### Declaration

  `float `f10`(float `a`, float `b`);`

  Produces something in (`a`;`b`]

- `h10`

  #### Declaration

  `float `h10`(float `a`, float `b`);`

  Produces something in [`a`;`b`)

- `bug6090`

  #### Declaration

  `void `bug6090`(string f = "$(B b)", char g = ')')(string `h` = "$(", string `i` = "$)");`

- `T`

  #### Declaration

  `struct `T`;`

  - `this`

    #### Declaration

    `this(A...)(A `args`);`

  - `this`

    #### Declaration

    `this(int);`

- `x14547`

  #### Declaration

  `int `x14547`;
  enum int `y14547`;`

  doc-comment

- `isInt14547`

  #### Declaration

  `enum auto `isInt14547`(T);
  enum bool `isString14547`(T);
  static immutable `typeName14547`(T);
  int `storageFor14547`(T);`

  doc-comment

- `foo14547`

  #### Declaration

  `enum int `foo14547`(T);
  template `bar14547`(T) if (is(T == int))`

  doc-comment