Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.0%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: steve-downey
  • License: apache-2.0
  • Language: TeX
  • Default Branch: main
  • Size: 1.3 MB
Statistics
  • Stars: 2
  • Watchers: 4
  • Forks: 3
  • Open Issues: 5
  • Releases: 0
Created over 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation Codeowners

README.md

OPTIONAL

A proof of concept for the std::optional proposal.

Source is licensed with the Apache 2.0 license with LLVM exceptions

// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

Documentation and associated papers are licensed with the Creative Commons Attribution 4.0 International license.

// SPDX-License-Identifier: CC-BY-4.0

The intent is that the source and documentation are available for use by people implementing their own optional types as well as people using the optional presented here as-is.

The README itself is licesed with CC0 1.0 Universal. Copy the contents and incorporate in your own work as you see fit.

// SPDX-License-Identifier: CC0-1.0

Building Optional

Dependencies

This project is mainly tested on Ubuntu 22.04, but it should be as portable as CMake is.

This project has zero C or C++ depenendencies.

It does require two tools as build-time dependencies:

  • cmake
  • ninja, make, or another CMake-supported build system
    • CMake defaults to "Unix Makefiles" on POSIX systems

Compiling the paper requires a working LaTeX installation. See instructions for configuring your system at C++ Standard Draft Sources

Instructions

Basic Build

This project strives to be as normal and simple a CMake project as possible. This build workflow in particular will work, producing a static example library, ready to package:

shell cmake --workflow --preset gcc-14 This should build and run the tests with GCC 14 with the address and undefined behavior sanitizers enabled.

More complex cases

The CMake preset system suffers from combinitorial explosion. There is a makefile in the root of the repository to aid in running more configurations.

shell make -k TOOLCHAIN=clang-18 CONFIG=Tsan VERBOSE=1

The makefile will use your system compiler, c++, if no toolchain name is provided, otherwise it will use the toolchain in the etc/ directory to perform the build. The Ninja multi config generator is used, with configurations for RelWithDebugInfo, Debug, Tsan, and Asan configured by default.

Building P2988

The papers/ subdirectory has the LaTeX souces for P2988 and the supporting macro definitions. To build, run shell make papers

A working recent Python 3 is required to format the sources for the paper. A virtual env will be created in the papers subdirectory which the minted LaTeX package will use.

`

Owner

  • Name: Steve Downey
  • Login: steve-downey
  • Kind: user
  • Location: United States
  • Company: Software engineer @Bloomberg

This is my personal collection of stuff, unconnected with my work @bloomberg.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Downey"
  given-names: "Stephen"
title: "smd::optional::optional<T&> "
url: "https://github.com/steve-downey/optional_ref"

GitHub Events

Total
Last Year

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v3 composite
Dockerfile docker
  • ${BASE} latest build
docker-compose.yml docker
papers/requirements.txt pypi
  • pygments *