Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview

Artifact ID: 511ba92bd9c9347455475ade7fd30ede7d5822598aa9d05213e437969ea9faaa
Page Name:Cxxomfort
Date: 2019-02-16 00:57:32
Original User: luismachuca
Parent: 6999a666bb6f4f41f2e54c6db52b1b253d31eca218a4763bdbdc37e14e99f3d4
Content
Comfort, n. [3]

A consolation; something relieving suffering or worry.

"We still have the spare tire? That's a comfort at least."

(Wiktionary)

Cxxomfort (cxx as in C++, comfort as in comfort) is a small, header-only library that backports various facilities from more recent C++ Standards, providing access to them to previous versions such as C++03 or C++11: nullptr, begin/end, type_index, byte or the newer algorithms and functors, as well as many others, are made available.

I wrote it originally to facilitate my working with the evolving C++ standard as I was getting back into the language. It is intended to reduce the amount and stress of code rewrite while at the same time assisting in backwards and forwards portability.

Current version: 20190128 (.88)

Quick & Dirty Install

On your shell:

fossil clone http://ryan.gulix.cl/fossil.cgi/cxxomfort cxxomfort.fossil
mkdir cxxomfort && cd cxxomfort
fossil open ../cxxomfort.fossil

On your code:

#include <cxxomfort/cxxomfort.hpp>

Project Documentation

Install & Setup

Autogenerated Documentation
In the simplest form, installing the library is as simple as cloning the repo and adding the path to the compiler's #include search path. Usage is as simple as including a header and start coding:
#include <cxxomfort/backports.hpp> // for the backports
#include <cxxomfort/cxxomfort.hpp> // for the whole package
  • BehaviourMacros
  • Features - backports or emulations from various C++ Standards.
  • Fixes - fixes to elements that are broken in std in certain compilers.
  • Supplements - features and interfaces specific to cxxomfort, that complement the various C++ headers.
  • Extras that don't take part of the default distribution, such as implementation of simple ranges, etc...
  • Transparent Headers

Meta

The purpose of this library is to ease writing natural-feeling, forwards-compatible code once. As such, some design decisions are made that might conflict with conflict with certain pedantic "coding styles". For a quick, uncomprehensive check read Rationale, and also take a look at https://softwareengineering.stackexchange.com/questions/142836/achieving-forward-compatibility-with-c11 for evolution of the rationale.

The library does not aim to be perfect - that way lies madness, suffering, and suffering leads to anger, and anger leads to overused lines from movies. Instead, it aims to be "good enough" for the backports to be usable as far back as possible Standards-wise - all while remaining relatively simple.

For a list features included in this library and what are the Standard Proposals they come from check Implementation Status.

Credits to the various solutions in Credits.

Q&A / reports at luis[dot]machuca[at]gmail[dot]com or file a request in the ticket system.