Single Source of Truth
Mr.Docs turns the documentation comments that live next to your C++ declarations into authoritative reference pages. One source of truth—your code.
Built for C++
Mr.Docs models C++ accurately: overload sets, concepts and constraints, deduced return types, aliases, constants, SFINAE, inherited and hidden members, niebloids, and more.
Multiple output formats
Export to AsciiDoc, HTML, or XML - or extend it with your own generator plugins.
Customizable
Highly configurable: control output format and theme, tailor symbol selection, and tune generation to match your project’s standards.
More Code, Fewer Workarounds
Mr.Docs lets you keep code simple and maintainable.
- Accurate rendering of attributes and exception specifications (e.g. [[noreturn]], noexcept).
/** Exit the program.
    The program will end immediately.
    @note This function does not return.
*/
[[noreturn]]
void
terminate() noexcept;terminate
Exit the program.
Synopsis
<terminate.cpp>
[[noreturn]]
void
terminate() noexcept;
Description
The program will end immediately.
NOTE
This function does not return.
- Documentation comments become structured reference pages—synopsis, description, parameters, and returns.
/** Return the distance between two points
    This function returns the distance between two points
    according to the Euclidean distance formula.
    @param x0 The x-coordinate of the first point
    @param y0 The y-coordinate of the first point
    @param x1 The x-coordinate of the second point
    @param y1 The y-coordinate of the second point
    @return The distance between the two points
*/
double
distance(double x0, double y0, double x1, double y1);distance
Return the distance between two points
Synopsis
<distance.cpp>
double
distance(
    double x0,
    double y0,
    double x1,
    double y1);
Description
This function returns the distance between two points according to the Euclidean distance formula.
Return Value
The distance between the two pointsParameters
| Name | Description | 
|---|---|
| x0 | The x-coordinate of the first point | 
| y0 | The y-coordinate of the first point | 
| x1 | The x-coordinate of the second point | 
| y1 | The y-coordinate of the second point | 
- Use directives to capture semantics beyond the signature.
/** Return true if a number is prime.
    @par Complexity
    Linear in n.
    @return Whether `n` is prime.
    @param n The number to test
*/
bool
is_prime(unsigned long long n) noexcept;is_prime
Return true if a number is prime.
Synopsis
<is_prime.cpp>
bool
is_prime(unsigned long long n) noexcept;
Complexity
Linear in n.
Return Value
Whethern is prime.
Parameters
| Name | Description | 
|---|---|
| n | The number to test | 
- Understands concepts, constraints, and SFINAE—rendered as you wrote them.
#include <type_traits>
#include <stdexcept>
/** Computes the square root of an integral value.
    This function calculates the square root of a
    given integral value using bit manipulation.
    @throws std::invalid_argument if the input value is negative.
    @tparam T The type of the input value. Must be an integral type.
    @param value The integral value to compute the square root of.
    @return The square root of the input value.
 */
template <typename T>
std::enable_if_t<std::is_integral_v<T>, T> sqrt(T value) {
    if (value < 0) {
        throw std::invalid_argument(
            "Cannot compute square root of a negative number");
    }
    T result = 0;
    // The second-to-top bit is set
    T bit = 1 << (sizeof(T) * 8 - 2);
    while (bit > value) bit >>= 2;
    while (bit != 0) {
        if (value >= result + bit) {
            value -= result + bit;
            result += bit << 1;
        }
        result >>= 1;
        bit >>= 2;
    }
    return result;
}
sqrt
Computes the square root of an integral value.
Synopsis
<sqrt.cpp>
template<typename T>
T
sqrt(T value)
requires std::is_integral_v<T>;
Description
This function calculates the square root of a given integral value using bit manipulation.
Exceptions
| Name | Thrown on | 
|---|---|
| std::invalid_argument | if the input value is negative. | 
Return Value
The square root of the input value.Template Parameters
| Name | Description | 
|---|---|
| T | The type of the input value. Must be an integral type. | 
Parameters
| Name | Description | 
|---|---|
| value | The integral value to compute the square root of. | 
Like what you see? Star us on GitHub: