A small settings struct keeps related project defaults together.

settings Grouping configuration values in a struct makes the data easy to pass and inspect.
defaults Defaults should be explicit so later calculations can use one named source of truth.

Config Defaults

requestedTimeout
config_defaults.cpp
Replay: real traced execution (multi-file project)
#include <iostream>

struct Settings {
    int retries;
    int timeout;
};

int main() {
    int requestedTimeout = 30;

    Settings settings{3, requestedTimeout};
    int totalWait = settings.retries * settings.timeout;

    std::cout << "retries=" << settings.retries << std::endl;
    std::cout << "timeout=" << settings.timeout << std::endl;
    std::cout << "totalWait=" << totalWait << std::endl;
    return 0;
}
#include <iostream>

struct Settings {
    int retries;
    int timeout;
};

int main() {
    int requestedTimeout = 5;

    Settings settings{3, requestedTimeout};
    int totalWait = settings.retries * settings.timeout;

    std::cout << "retries=" << settings.retries << std::endl;
    std::cout << "timeout=" << settings.timeout << std::endl;
    std::cout << "totalWait=" << totalWait << std::endl;
    return 0;
}
#include <iostream>

struct Settings {
    int retries;
    int timeout;
};

int main() {
    int requestedTimeout = 60;

    Settings settings{3, requestedTimeout};
    int totalWait = settings.retries * settings.timeout;

    std::cout << "retries=" << settings.retries << std::endl;
    std::cout << "timeout=" << settings.timeout << std::endl;
    std::cout << "totalWait=" << totalWait << std::endl;
    return 0;
}
  1. requestedTimeout ← 30, settings ← (empty), totalWait ← 90

    8int main() {9    int requestedTimeout→ 30 = 30; //@requestedTimeout=5, 601011    Settings settings→ (empty){3, requestedTimeout30};12    int totalWait→ 90 = settings.retries3 * settings.timeout30;1314    std::cout << "retries=" << settings(empty).retries << std::endl;15    std::cout << "timeout=" << settings(empty).timeout << std::endl;16    std::cout << "totalWait=" << totalWait90 << std::endl;17    return 0;18}
    outputretries=3
    timeout=30
    totalWait=90
  1. requestedTimeout ← 5, settings ← (empty), totalWait ← 15

    8int main() {9    int requestedTimeout→ 5 = 5;1011    Settings settings→ (empty){3, requestedTimeout5};12    int totalWait→ 15 = settings.retries3 * settings.timeout5;1314    std::cout << "retries=" << settings(empty).retries << std::endl;15    std::cout << "timeout=" << settings(empty).timeout << std::endl;16    std::cout << "totalWait=" << totalWait15 << std::endl;17    return 0;18}
    outputretries=3
    timeout=5
    totalWait=15
  1. requestedTimeout ← 60, settings ← (empty), totalWait ← 180

    8int main() {9    int requestedTimeout→ 60 = 60;1011    Settings settings→ (empty){3, requestedTimeout60};12    int totalWait→ 180 = settings.retries3 * settings.timeout60;1314    std::cout << "retries=" << settings(empty).retries << std::endl;15    std::cout << "timeout=" << settings(empty).timeout << std::endl;16    std::cout << "totalWait=" << totalWait180 << std::endl;17    return 0;18}
    outputretries=3
    timeout=60
    totalWait=180