1
0
forked from boostorg/mpl

Compare commits

...

9 Commits

Author SHA1 Message Date
Peter Dimov d223d3cd60 Work around warnings in char.cpp and integral_c.cpp when char is unsigned. Fixes #50. 2025-01-02 16:43:59 +02:00
Peter Dimov bace27426e Add a CI job testing -funsigned-char 2025-01-02 16:33:25 +02:00
Peter Dimov c8a1f64ff6 Apply Node20 workaround 2025-01-02 16:06:34 +02:00
Peter Dimov 4b34fa1378 Update ci.yml 2025-01-02 16:05:45 +02:00
René Ferdinand Rivera Morell bf4a5afb3c Add support for modular build structure. (#79)
* Make the library modular usable.

* Switch to library requirements instead of source. As source puts extra source in install targets.

* Add requires-b2 check to top-level build file.

* Bump B2 require to 5.2

* Change all <source> references to <library>.

* Update copyright dates.

* Move inter-lib dependencies to a project variable and into the build targets.

* Update build deps.
2024-11-30 17:11:24 -05:00
Peter Dimov b37b709cbd Merge branch 'next-prior' of https://github.com/ecatmur/mpl into feature/issue-69 2024-06-18 02:34:39 +03:00
Peter Dimov b86c4cc950 Add test for issue #69 2024-06-18 02:23:56 +03:00
Ed Catmur fb6b861834 Update integral_wrapper.hpp
Apply change since C++11
2023-11-27 09:55:00 -06:00
Ed Catmur 8499ae7e4f Use static const for next/prior from C++17
Trying to form next/prior in constant evaluation may be ill-formed; see https://github.com/boostorg/mpl/issues/69
2023-11-24 08:53:05 -07:00
9 changed files with 99 additions and 31 deletions
+34 -14
View File
@@ -56,7 +56,7 @@ jobs:
install: g++-12
- toolset: gcc-13
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:23.04
container: ubuntu:24.04
os: ubuntu-latest
install: g++-13
- toolset: gcc-14
@@ -64,6 +64,11 @@ jobs:
container: ubuntu:24.04
os: ubuntu-latest
install: g++-14
- toolset: gcc
cxxflags: -funsigned-char
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
- toolset: clang
compiler: clang++-3.9
cxxstd: "03,11,14"
@@ -138,13 +143,13 @@ jobs:
- toolset: clang
compiler: clang++-16
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:23.04
container: ubuntu:24.04
os: ubuntu-latest
install: clang-16
- toolset: clang
compiler: clang++-17
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:23.10
container: ubuntu:24.04
os: ubuntu-latest
install: clang-17
- toolset: clang
@@ -153,31 +158,43 @@ jobs:
container: ubuntu:24.04
os: ubuntu-latest
install: clang-18
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
os: macos-12
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
os: macos-13
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
os: macos-14
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
os: macos-15
runs-on: ${{matrix.os}}
container: ${{matrix.container}}
container:
image: ${{matrix.container}}
volumes:
- /node20217:/node20217:rw,rshared
- ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
- name: Setup container environment
if: matrix.container
run: |
apt-get update
apt-get -y install sudo python3 git g++
apt-get -y install sudo python3 git g++ curl xz-utils
- name: Install nodejs20glibc2.17
if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }}
run: |
curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
ldd /__e/node20/bin/node
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
@@ -215,7 +232,7 @@ jobs:
- name: Run tests
run: |
cd ../boost-root
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} cxxflags=${{matrix.cxxflags}} variant=debug,release
windows:
strategy:
@@ -283,9 +300,10 @@ jobs:
include:
- os: ubuntu-20.04
- os: ubuntu-22.04
- os: macos-12
- os: ubuntu-24.04
- os: macos-13
- os: macos-14
- os: macos-15
runs-on: ${{matrix.os}}
@@ -331,9 +349,10 @@ jobs:
include:
- os: ubuntu-20.04
- os: ubuntu-22.04
- os: macos-12
- os: ubuntu-24.04
- os: macos-13
- os: macos-14
- os: macos-15
runs-on: ${{matrix.os}}
@@ -389,9 +408,10 @@ jobs:
include:
- os: ubuntu-20.04
- os: ubuntu-22.04
- os: macos-12
- os: ubuntu-24.04
- os: macos-13
- os: macos-14
- os: macos-15
runs-on: ${{matrix.os}}
-11
View File
@@ -1,11 +0,0 @@
# Boost.MPL Library Jamfile
#
# Copyright (c) 2018 James E. King III
#
# Use, modification, and distribution are subject to the
# Boost Software License, Version 1.0. (See accompanying file
# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
# please order by name to ease maintenance
build-project example ;
build-project test ;
+29
View File
@@ -0,0 +1,29 @@
# Copyright René Ferdinand Rivera Morell 2023-2024
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
require-b2 5.2 ;
constant boost_dependencies :
/boost/config//boost_config
/boost/core//boost_core
/boost/predef//boost_predef
/boost/preprocessor//boost_preprocessor
/boost/static_assert//boost_static_assert
/boost/type_traits//boost_type_traits
/boost/utility//boost_utility ;
project /boost/mpl
: common-requirements
<include>include
;
explicit
[ alias boost_mpl : : : : <library>$(boost_dependencies) ]
[ alias all : boost_mpl example test ]
;
call-if : boost-library mpl
;
+3 -1
View File
@@ -7,9 +7,11 @@
import testing ;
project : requirements <library>/boost/mpl//boost_mpl ;
test-suite "mpl-examples"
: [ run inherit_linearly.cpp ]
[ compile integer.cpp ]
[ run tuple_from_list.cpp ]
[ run tuple_from_list.cpp : : : <library>/boost/tuple//boost_tuple ]
;
+2 -1
View File
@@ -56,7 +56,8 @@ struct AUX_WRAPPER_NAME
// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
// while some other don't like 'value + 1' (Borland), and some don't like
// either
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \
|| __cplusplus >= 201103L
private:
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
+5 -1
View File
@@ -1,5 +1,6 @@
project
: requirements
<library>/boost/mpl//boost_mpl
<warnings>extra
<toolset>clang:<cxxflags>-Wno-variadic-macros
<toolset>gcc:<cxxflags>-Wshadow
@@ -49,7 +50,8 @@ compile find.cpp ;
compile find_if.cpp ;
compile fold.cpp ;
run for_each.cpp
: : : <cxxstd>98:<build>no <cxxstd>03:<build>no ;
: : : <cxxstd>98:<build>no <cxxstd>03:<build>no
<library>/boost/bind//boost_bind ;
compile front.cpp ;
compile get_tag_def.cpp ;
compile has_xxx.cpp ;
@@ -110,3 +112,5 @@ compile vector.cpp ;
compile vector_c.cpp ;
compile zip_view.cpp ;
run string.cpp ;
run issue_69.cpp ;
+5
View File
@@ -13,12 +13,17 @@
#include <boost/mpl/char.hpp>
#include <boost/preprocessor/repeat.hpp>
#include <climits>
#include "integral_wrapper_test.hpp"
MPL_TEST_CASE()
{
#if CHAR_MAX > 0
# define WRAPPER(T, i) char_<static_cast<char>(i)>
#else
# define WRAPPER(T, i) char_<i>
#endif
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
}
+8 -3
View File
@@ -13,6 +13,7 @@
#include <boost/mpl/integral_c.hpp>
#include <boost/preprocessor/repeat.hpp>
#include <climits>
#include "integral_wrapper_test.hpp"
@@ -21,10 +22,14 @@ MPL_TEST_CASE()
{
# define WRAPPER(T, i) integral_c<T,i>
#if !(defined(__APPLE_CC__) && defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ <= 3))
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
#endif
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, short)
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, int)
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, long)
#if CHAR_MAX > 0
# undef WRAPPER
# define WRAPPER(T, i) integral_c<T,static_cast<T>(i)>
#endif
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
}
+13
View File
@@ -0,0 +1,13 @@
// Copyright 2024 Peter Dimov
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#include <boost/mpl/integral_c.hpp>
enum test { zero, one };
int main()
{
boost::mpl::integral_c<test, zero> m;
return m.value;
}