Download Latest Version tclap-1.4.0.tar.gz (6.9 MB) Google Add to Preferred Sources
Home / v1.6.0
Name Modified Size InfoDownloads / Week
Parent folder
SHA256SUMS 2026-10-24 167 Bytes
tclap-1.6.0.tar.gz 2026-10-24 7.1 MB
tclap-1.6.0.zip 2026-10-24 7.7 MB
README.md 2026-10-24 3.5 kB
TCLAP 1.6.0 source code.tar.gz 2026-10-24 245.4 kB
TCLAP 1.6.0 source code.zip 2026-10-24 409.1 kB
Totals: 6 Items   15.5 MB 30

TCLAP 1.6.0 - changes since 1.4.0

This summary compares TCLAP 1.6.0 with the v1.4.0 tag. TCLAP remains a header-only library with the 1.4-style API. Use TCLAP 1.4 for C++98 projects; TCLAP 1.6 requires C++20 and a standard library providing std::format.

C++20 modernization

  • Internals use concepts, range algorithms, move semantics and smart-pointer ownership. Standard output formatting uses std::format. Constructors take selected string parameters by value and move them into owned storage.
  • Query functions gain [[nodiscard]], and applicable accessors gain noexcept or constexpr. Copy prevention uses deleted operations, virtual overrides are explicit, and trivial special members use their default definitions.
  • CMake's TCLAP::TCLAP target propagates cxx_std_20 to both build-tree and installed consumers. Direct compiler and pkg-config users must select C++20 themselves. CMake still requires version 3.13 or later.

Constraints and custom types

  • PredicateConstraint<t> now defaults to std::function<bool(const t&)> instead of a function pointer. MakeConstraint and MakeRuleConstraint deduce and own callable types, copying lvalues and moving rvalues, including lambdas with move-only captures. Bind the result to a named local that outlives arguments borrowing it; moving it does not retarget those arguments.
  • Predicate invocation uses std::invoke. Null member pointers and empty std::function objects are rejected with std::invalid_argument, in addition to null function pointers. Predicates must satisfy std::predicate when invoked through a const callable with const T&; text policies must return descriptions and short IDs convertible to std::string.
  • Comparison constraints copy lvalue bounds and move rvalue bounds, including move-only state. RangeConstraint takes its bounds by value and moves them into storage. These constraints require totally ordered value types with ostream insertion; custom types with only a subset of comparison operators need adapting to satisfy std::totally_ordered.
  • ValueArg and MultiArg extraction is constrained to stream-extractable types or types explicitly using the StringLike trait. ValuesConstraint requires ostream insertion for its help text and uses std::ranges::find for lookup; custom equality must meet that algorithm's C++20 requirements.

Compatibility and packaging

  • Ordinary 1.4-style argument construction, registration, getValue(), visitors and parse() calls remain available.
  • Custom overrides of functions now declared noexcept must preserve that exception guarantee. Code relying on exact constructor/function-pointer signatures or the PredicateConstraint default callable type may need adapting; ignored query results can produce new compiler warnings.
  • Generated configuration headers expose TCLAP_VERSION_PATCH alongside the major and minor macros. Installed CMake version checks accept compatible requests within the same major version and reject other major versions.
  • Documentation, examples and CI select the 1.6 API and C++20 requirements. Two additional unit-test executables cover modern callable and ordered constraint behavior beyond the suite shipped with 1.4.0.

Download Templatized C++ Command Line Parser

Source: README.md, updated 2026-10-24