mirror of
https://github.com/TartanLlama/expected.git
synced 2025-08-02 18:34:29 +02:00
Test on many compilers (#123)
This commit is contained in:
113
.github/workflows/cmake.yml
vendored
113
.github/workflows/cmake.yml
vendored
@@ -8,16 +8,123 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
std: [11, 14]
|
||||||
|
cxx: [g++-4.8, g++-4.9, g++-5, g++-6, g++-7, g++-8, g++-9, g++-10, clang++-3.5, clang++-3.6, clang++-3.7, clang++-3.8, clang++-3.9, clang++-4.0, clang++-5.0, clang++-6.0, clang++-7, clang++-8, clang++-9, clang++-10, clang++-11]
|
||||||
|
|
||||||
|
exclude:
|
||||||
|
- cxx: g++-4.8
|
||||||
|
std: 14
|
||||||
|
- cxx: g++4.9
|
||||||
|
std: 14
|
||||||
|
|
||||||
|
include:
|
||||||
|
- cxx: g++-4.8
|
||||||
|
install: sudo apt install g++-4.8
|
||||||
|
- cxx: g++-4.9
|
||||||
|
install: sudo apt install g++-4.9
|
||||||
|
- cxx: g++-5
|
||||||
|
install: sudo apt install g++-5
|
||||||
|
- cxx: g++-6
|
||||||
|
install: sudo apt install g++-6
|
||||||
|
- cxx: g++-7
|
||||||
|
install: sudo apt install g++-7
|
||||||
|
- cxx: g++-8
|
||||||
|
std: 11
|
||||||
|
install: sudo apt install g++-8
|
||||||
|
- cxx: g++-8
|
||||||
|
std: 14
|
||||||
|
install: sudo apt install g++-8
|
||||||
|
- cxx: g++-8
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install g++-8
|
||||||
|
- cxx: g++-9
|
||||||
|
std: 14
|
||||||
|
- cxx: g++-9
|
||||||
|
std: 17
|
||||||
|
- cxx: g++-10
|
||||||
|
std: 14
|
||||||
|
- cxx: g++-10
|
||||||
|
std: 17
|
||||||
|
- cxx: g++-11
|
||||||
|
std: 14
|
||||||
|
install: sudo apt install g++-11
|
||||||
|
- cxx: g++-11
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install g++-11
|
||||||
|
- cxx: g++-11
|
||||||
|
std: 20
|
||||||
|
install: sudo apt install g++-11
|
||||||
|
|
||||||
|
|
||||||
|
- cxx: clang++-3.5
|
||||||
|
install: sudo apt install clang-3.5
|
||||||
|
- cxx: clang++-3.6
|
||||||
|
install: sudo apt install clang-3.6
|
||||||
|
- cxx: clang++-3.7
|
||||||
|
install: sudo apt install clang-3.7
|
||||||
|
- cxx: clang++-3.8
|
||||||
|
install: sudo apt install clang-3.8
|
||||||
|
- cxx: clang++-3.9
|
||||||
|
install: sudo apt install clang-3.9
|
||||||
|
- cxx: clang++-4.0
|
||||||
|
install: sudo apt install clang-4.0
|
||||||
|
- cxx: clang++-5.0
|
||||||
|
install: sudo apt install clang-5.0
|
||||||
|
- cxx: clang++-6.0
|
||||||
|
install: sudo apt install clang-6.0
|
||||||
|
- cxx: clang++-7
|
||||||
|
install: sudo apt install clang-7
|
||||||
|
- cxx: clang++-8
|
||||||
|
install: sudo apt install clang-8
|
||||||
|
- cxx: clang++-9
|
||||||
|
install: sudo apt install clang-9
|
||||||
|
- cxx: clang++-10
|
||||||
|
install: sudo apt install clang-10
|
||||||
|
- cxx: clang++-11
|
||||||
|
install: sudo apt install clang-11
|
||||||
|
|
||||||
|
|
||||||
|
- cxx: clang++-6.0
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install clang-6.0
|
||||||
|
- cxx: clang++-7
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install clang-7
|
||||||
|
- cxx: clang++-8
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install clang-8
|
||||||
|
- cxx: clang++-9
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install clang-9
|
||||||
|
- cxx: clang++-10
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install clang-10
|
||||||
|
- cxx: clang++-11
|
||||||
|
std: 17
|
||||||
|
install: sudo apt install clang-11
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Toolchain
|
||||||
|
run: |
|
||||||
|
sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ xenial main'
|
||||||
|
sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ xenial universe'
|
||||||
|
sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic main'
|
||||||
|
sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ bionic universe'
|
||||||
|
${{matrix.install}}
|
||||||
|
|
||||||
- name: Configure CMake
|
- name: Configure CMake
|
||||||
run: cmake -B ${{github.workspace}}/build
|
env:
|
||||||
|
CXX: ${{matrix.cxx}}
|
||||||
|
run: cmake -B ${{github.workspace}}/build -DCMAKE_CXX_STANDARD=${{matrix.std}}
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build ${{github.workspace}}/build
|
run: cmake --build ${{github.workspace}}/build
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
Single header implementation of `std::expected` with functional-style extensions.
|
Single header implementation of `std::expected` with functional-style extensions.
|
||||||
|
|
||||||
[](https://tl.tartanllama.xyz/en/latest/?badge=latest)
|
[](https://tl.tartanllama.xyz/en/latest/?badge=latest)
|
||||||
Clang + GCC: [](https://travis-ci.org/TartanLlama/expected)
|
Clang + GCC: [](https://github.com/TartanLlama/expected/actions/workflows/cmake.yml)
|
||||||
MSVC: [](https://ci.appveyor.com/project/TartanLlama/expected)
|
MSVC: [](https://ci.appveyor.com/project/TartanLlama/expected)
|
||||||
|
|
||||||
Available on [Vcpkg](https://github.com/microsoft/vcpkg/tree/master/ports/tl-expected) and [Conan](https://github.com/yipdw/conan-tl-expected).
|
Available on [Vcpkg](https://github.com/microsoft/vcpkg/tree/master/ports/tl-expected) and [Conan](https://github.com/yipdw/conan-tl-expected).
|
||||||
|
@@ -612,7 +612,13 @@ template <class T, class E> struct expected_storage_base<T, E, false, true> {
|
|||||||
|
|
||||||
// `T` is `void`, `E` is trivially-destructible
|
// `T` is `void`, `E` is trivially-destructible
|
||||||
template <class E> struct expected_storage_base<void, E, false, true> {
|
template <class E> struct expected_storage_base<void, E, false, true> {
|
||||||
TL_EXPECTED_MSVC2015_CONSTEXPR expected_storage_base() : m_has_val(true) {}
|
#if __GNUC__ <= 5
|
||||||
|
//no constexpr for GCC 4/5 bug
|
||||||
|
#else
|
||||||
|
TL_EXPECTED_MSVC2015_CONSTEXPR
|
||||||
|
#endif
|
||||||
|
expected_storage_base() : m_has_val(true) {}
|
||||||
|
|
||||||
constexpr expected_storage_base(no_init_t) : m_val(), m_has_val(false) {}
|
constexpr expected_storage_base(no_init_t) : m_val(), m_has_val(false) {}
|
||||||
|
|
||||||
constexpr expected_storage_base(in_place_t) : m_has_val(true) {}
|
constexpr expected_storage_base(in_place_t) : m_has_val(true) {}
|
||||||
|
Reference in New Issue
Block a user