summaryrefslogtreecommitdiffstats
path: root/testing/074_ref.cpp
blob: cc9cf4a40205579a2da861d722409c6685df0879 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// objective: test \ref command in combination with const
// check: struct_foo.xml
// check: namespacens.xml

#include <initializer_list>

/** @brief Foo class.
 *
 *  @see @ref Foo::Foo() constructor for details.
 *  @see @ref Foo constant.
 *  @see @ref operator<<(int) "less than operator".
 *  @see @ref operator<<(int) const "const less than operator".
 *  @see @ref operator()(int) "call operator".
 *  @see @ref operator()(int) const "const call operator".
 *  @see @ref operator&=(const Foo&) "and equal operator".
 *  @see @ref operator&=(const Foo&) const "const and equal operator".
 *  @see @ref operator->*(int *) "member pointer operator".
 */
struct Foo {
  /** Constructor */
  Foo();
  /**
   * @brief Fun of two
   *
   * - fun() const
   * - @ref fun() const
   * - @ref fun() const "title"
   */
  static Foo fun(Foo a, Foo b);

  /** overloaded less than operator */
  Foo& operator<< (int i);

  /** overloaded const less than operator */
  const Foo& operator<< (int i) const;

  /** overloaded call operator */
  int operator()(int i);

  /** overloaded call operator */
  int operator()(int i) const;

  /** and equal operator */
  Foo& operator&=(const Foo& rhs);

  /** and equal operator */
  const Foo& operator&=(const Foo& rhs) const;

  /** Member pointer operator */
  int* operator->*(int *p);

  /** @brief Fun with itself */
  Foo fun() const;
};

/**
@brief A namespace

- Link to an UDL w/o spaces: @link operator""_op @endlink
- Link to an UDL with spaces: @link operator""_oq @endlink
- Link to a function with spaces: @ref foo(std::initializer_list< int* >)
- Link to a function w/o spaces: @ref foo(std::initializer_list<int*>)
*/
namespace ns {

/** @brief An operator */
int operator""_op(unsigned long long);

/** @brief Another operator */
int operator "" _oq(unsigned long long);

/** @brief Function */
void foo(std::initializer_list<int*>);

}