Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
8a4416f
Initial implementation
anarthal Dec 22, 2024
da9305f
check_cmake_version
anarthal Dec 22, 2024
3808ec9
mp_size
anarthal Dec 22, 2024
904ee5d
detail/modules.hpp
anarthal Dec 22, 2024
7249a36
mp_size_2
anarthal Dec 22, 2024
7da0531
Use CMake helper function
anarthal Dec 22, 2024
224e8e7
Temporarily comment tests
anarthal Dec 22, 2024
c86e5a0
Recovered 10 more tests
anarthal Dec 22, 2024
ebdb3c4
Rename module to boost_xxx.cpppm
anarthal Dec 30, 2024
97e83bc
BASE_DIRS
anarthal Dec 30, 2024
2d0cd75
extern C++
anarthal Dec 30, 2024
3bf2419
Rename config macro to BOOST_USE_MODULES
anarthal Dec 30, 2024
05d398e
Tests: list that don't require ifdefs
anarthal Jan 1, 2025
df6c026
Missing exports in bind and mp_plus
anarthal Jan 1, 2025
252ddc7
Tests: algorithm 1
anarthal Jan 1, 2025
4283284
Finished list tests
anarthal Jan 1, 2025
a792291
Algorithm tests 2
anarthal Jan 1, 2025
8354e2c
Non-cmake algorithm test
anarthal Jan 1, 2025
40165f8
tests: integral
anarthal Jan 1, 2025
a7f9b00
Tests: compile
anarthal Jan 1, 2025
ed0935f
Utility tests
anarthal Jan 1, 2025
23871f8
Integer sequence tests
anarthal Jan 1, 2025
e4294bc
Missing exports in tuple
anarthal Jan 1, 2025
13c3bce
Tests: tuple
anarthal Jan 1, 2025
9f7574d
Set modularization and tests
anarthal Jan 1, 2025
36f58d0
Tests: function
anarthal Jan 1, 2025
f4c4e60
Map tests and modularization
anarthal Jan 1, 2025
8057e78
Bind tests
anarthal Jan 1, 2025
561cf44
Lambda tests and modularization
anarthal Jan 1, 2025
df2c079
Version tests
anarthal Jan 1, 2025
c35971e
Move away from BOOST_MODULE_EXPORT
anarthal Jan 3, 2025
87b5093
Follow format conventions
anarthal Jan 3, 2025
0db3440
CI prototype
anarthal Jan 3, 2025
9259563
force CI run
anarthal Jan 3, 2025
d40a6e0
Incorrect script path
anarthal Jan 3, 2025
7e06b93
Incorrect script path (2)
anarthal Jan 3, 2025
7c9f142
Added some modules CIs
anarthal Jan 3, 2025
2cace6f
Experiment with null container
anarthal Jan 6, 2025
71cfe04
Install packages
anarthal Jan 6, 2025
27c0e8f
Missing git and flags
anarthal Jan 6, 2025
ad34be9
Missing ca-certificates
anarthal Jan 6, 2025
3ec117b
Missing python
anarthal Jan 6, 2025
4981334
Update remotes and install fixes
anarthal Jan 6, 2025
4dc9e3e
Move away from boost_set_cxx20_module_settings
anarthal Jan 6, 2025
965e512
Missing export in CI
anarthal Jan 6, 2025
269a621
Guards for add_subdir/install tests
anarthal Jan 6, 2025
417c6dd
Increase max cmake version of tests
anarthal Jan 6, 2025
78d9ef2
Recover the other posix flows
anarthal Jan 6, 2025
efe931b
Add Windows CMake add_subdirectory for modules
anarthal Jan 6, 2025
2a2a64b
Incorrect matrix reference
anarthal Jan 6, 2025
1369aa5
Remove install packages condition
anarthal Jan 6, 2025
de4b613
Add call to vcvarsall
anarthal Jan 6, 2025
1ef600d
add cmd /c
anarthal Jan 6, 2025
8b55719
Replace /c by /k
anarthal Jan 6, 2025
a3daecc
Move cmd /k location
anarthal Jan 6, 2025
d28ed4b
Attempt with call
anarthal Jan 6, 2025
8b67df4
Windows install modules
anarthal Jan 6, 2025
05ead52
Missing vcvarsall calls
anarthal Jan 6, 2025
38dfa0f
Run tests Windows
anarthal Jan 6, 2025
63dce8f
Missing cmake args
anarthal Jan 6, 2025
fd36f27
Missing __scope in header-only build
anarthal Jan 6, 2025
442ee2d
Missing -DBOOST_USE_MODULES=1
anarthal Jan 6, 2025
478901d
Separate Posix add_subdirectory workflow
anarthal Jan 6, 2025
38f54bc
Install workflow for modules in posix
anarthal Jan 6, 2025
e950579
Posix cmake test with modules
anarthal Jan 6, 2025
037fc1c
Missing BOOST_USE_MODULES
anarthal Jan 6, 2025
89b6066
Cleanup and recover all module builds
anarthal Jan 6, 2025
413faae
Recover the other builds
anarthal Jan 6, 2025
0b2f029
Cleanup existing workflows
anarthal Jan 6, 2025
810f292
Missing clone of Boost.Build
anarthal Jan 6, 2025
3f98b3b
Missing boost_install
anarthal Jan 6, 2025
d05eaaf
Recover depinst
anarthal Jan 7, 2025
2aff610
Update setup script
anarthal Jan 7, 2025
87fd498
Experiment with export using
anarthal Jan 7, 2025
9e36eb3
Experiment with import in GMF
anarthal Jan 10, 2025
e7fe52a
Export using cleanup
anarthal Jan 10, 2025
bd86b4d
Merge branch 'develop' into feature/cxx20-modules
anarthal Jan 11, 2025
268f361
Modularize mp_from_sequence_3
anarthal Jan 11, 2025
76759bd
Recover all CIs
anarthal Jan 11, 2025
ea45418
Fix standalone CMake
anarthal Jan 11, 2025
f6cd1d7
Guard cmake_policy
anarthal Jan 12, 2025
e19dc20
Migrate the library to use compatibility headers
anarthal Jan 15, 2025
62be460
Migrate tests to compatibility headers
anarthal Jan 15, 2025
c4ba590
Missing detail/config include in tuple_transform_2
anarthal Jan 15, 2025
cf7f209
Compat headers
anarthal Sep 4, 2025
cdec621
Remove BOOST_CONFIG_SKIP_IMPORT_STD
anarthal Sep 4, 2025
162f57d
Merge remote-tracking branch 'upstream/develop' into feature/cxx20-mo…
anarthal Sep 4, 2025
51d6028
Merge branch 'develop' into feature/cxx20-modules
anarthal Sep 10, 2025
ff9f2c2
Prevent GMF discards
anarthal Sep 10, 2025
7177bf1
Improve macro naming
anarthal Sep 10, 2025
8fbf075
BOOST_MP11_SKIP_IMPORT
anarthal Sep 10, 2025
a414d1c
Disable MSVC warning
anarthal Sep 10, 2025
07f6c0a
standalone tags
anarthal Sep 10, 2025
d1b1ed7
missing boost config
anarthal Sep 10, 2025
3badbce
Missing config in cuda linux
anarthal Sep 10, 2025
26323c3
proper config fix
anarthal Sep 10, 2025
257633f
Merge develp
anarthal Jan 30, 2026
d73754a
CMAKE_CXX_MODULE_STD
anarthal Jan 30, 2026
36e0ae5
Migrate to ABI-breaking style
anarthal Jan 30, 2026
025c0a4
BOOST_IN_MODULE_PURVIEW
anarthal Feb 26, 2026
17b89a0
Disable mpl tests
anarthal Feb 26, 2026
f319325
Update POSIX subdir
anarthal Mar 4, 2026
d2a3af1
comment others
anarthal Mar 4, 2026
ca37d52
fix yml
anarthal Mar 4, 2026
27ca2a0
cmake_cxx_compiler
anarthal Mar 4, 2026
75ee813
Other POSIX flows
anarthal Mar 4, 2026
14dbe95
Restore other workflows
anarthal Mar 4, 2026
c56a073
experimenting
anarthal Mar 5, 2026
077fdc4
cleanup experiment
anarthal Mar 5, 2026
c3650bd
proper version include
anarthal Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
400 changes: 394 additions & 6 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

36 changes: 28 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,37 @@
# 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

cmake_minimum_required(VERSION 3.5...3.16)
cmake_minimum_required(VERSION 3.5...3.31)

project(boost_mp11 VERSION 1.91.0 LANGUAGES CXX)

add_library(boost_mp11 INTERFACE)
if (BOOST_USE_MODULES)
add_library(boost_mp11 STATIC)
target_sources(boost_mp11 PUBLIC FILE_SET CXX_MODULES BASE_DIRS modules FILES modules/boost_mp11.cppm)
set(__scope PUBLIC)

# Enable and propagate C++23, import std, and the modules macro
target_compile_features(boost_mp11 PUBLIC cxx_std_23)
set_target_properties(boost_mp11 PROPERTIES CXX_MODULE_STD 1)
target_compile_definitions(boost_mp11 PUBLIC BOOST_USE_MODULES)

else()
add_library(boost_mp11 INTERFACE)
target_compile_features(boost_mp11 INTERFACE cxx_alias_templates cxx_variadic_templates cxx_decltype)
set(__scope INTERFACE)
endif()

add_library(Boost::mp11 ALIAS boost_mp11)
target_include_directories(boost_mp11 ${__scope} include)

target_include_directories(boost_mp11 INTERFACE include)
target_compile_features(boost_mp11 INTERFACE cxx_alias_templates cxx_variadic_templates cxx_decltype)

if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)

# Required to call deprecated FetchContent_Populate
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.30.0")
cmake_policy(SET CMP0169 OLD)
endif()

# Fetch support files

message(STATUS "Fetching BoostFetch.cmake")
Expand All @@ -40,10 +59,11 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)

set(BUILD_TESTING OFF) # hide cache variable

boost_fetch(boostorg/assert TAG develop EXCLUDE_FROM_ALL)
boost_fetch(boostorg/config TAG develop EXCLUDE_FROM_ALL)
boost_fetch(boostorg/core TAG develop EXCLUDE_FROM_ALL)
boost_fetch(boostorg/throw_exception TAG develop EXCLUDE_FROM_ALL)
# TODO: restore these tags once we start merging PRs
boost_fetch(anarthal/assert TAG feature/cxx20-modules EXCLUDE_FROM_ALL)
boost_fetch(anarthal/config TAG feature/cxx20-modules EXCLUDE_FROM_ALL)
boost_fetch(anarthal/core TAG feature/cxx20-modules EXCLUDE_FROM_ALL)
boost_fetch(anarthal/throw_exception TAG feature/cxx20-modules EXCLUDE_FROM_ALL)

unset(BUILD_TESTING)

Expand Down
177 changes: 94 additions & 83 deletions include/boost/mp11/algorithm.hpp

Large diffs are not rendered by default.

48 changes: 30 additions & 18 deletions include/boost/mp11/bind.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,19 @@
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt

#if defined(BOOST_USE_MODULES) && !defined(BOOST_MP11_INTERFACE_UNIT)

#include <boost/mp11/version.hpp>
#ifndef BOOST_IN_MODULE_PURVIEW
import boost.mp11;
#endif

#else

#include <boost/mp11/algorithm.hpp>
#include <boost/mp11/utility.hpp>
#include <cstddef>
#include <boost/mp11/detail/config.hpp>
#include <boost/mp11/detail/std/cstddef.hpp>

#if defined(_MSC_VER) || defined(__GNUC__)
# pragma push_macro( "I" )
Expand All @@ -23,42 +33,42 @@ namespace mp11
{

// mp_bind_front
template<template<class...> class F, class... T> struct mp_bind_front
BOOST_MP11_EXPORT template<template<class...> class F, class... T> struct mp_bind_front
{
// the indirection through mp_defer works around the language inability
// to expand U... into a fixed parameter list of an alias template

template<class... U> using fn = typename mp_defer<F, T..., U...>::type;
};

template<class Q, class... T> using mp_bind_front_q = mp_bind_front<Q::template fn, T...>;
BOOST_MP11_EXPORT template<class Q, class... T> using mp_bind_front_q = mp_bind_front<Q::template fn, T...>;

// mp_bind_back
template<template<class...> class F, class... T> struct mp_bind_back
BOOST_MP11_EXPORT template<template<class...> class F, class... T> struct mp_bind_back
{
template<class... U> using fn = typename mp_defer<F, U..., T...>::type;
};

template<class Q, class... T> using mp_bind_back_q = mp_bind_back<Q::template fn, T...>;
BOOST_MP11_EXPORT template<class Q, class... T> using mp_bind_back_q = mp_bind_back<Q::template fn, T...>;

// mp_arg
template<std::size_t I> struct mp_arg
BOOST_MP11_EXPORT template<std::size_t I> struct mp_arg
{
template<class... T> using fn = mp_at_c<mp_list<T...>, I>;
};

using _1 = mp_arg<0>;
using _2 = mp_arg<1>;
using _3 = mp_arg<2>;
using _4 = mp_arg<3>;
using _5 = mp_arg<4>;
using _6 = mp_arg<5>;
using _7 = mp_arg<6>;
using _8 = mp_arg<7>;
using _9 = mp_arg<8>;
BOOST_MP11_EXPORT using _1 = mp_arg<0>;
BOOST_MP11_EXPORT using _2 = mp_arg<1>;
BOOST_MP11_EXPORT using _3 = mp_arg<2>;
BOOST_MP11_EXPORT using _4 = mp_arg<3>;
BOOST_MP11_EXPORT using _5 = mp_arg<4>;
BOOST_MP11_EXPORT using _6 = mp_arg<5>;
BOOST_MP11_EXPORT using _7 = mp_arg<6>;
BOOST_MP11_EXPORT using _8 = mp_arg<7>;
BOOST_MP11_EXPORT using _9 = mp_arg<8>;

// mp_bind
template<template<class...> class F, class... T> struct mp_bind;
BOOST_MP11_EXPORT template<template<class...> class F, class... T> struct mp_bind;

namespace detail
{
Expand Down Expand Up @@ -90,7 +100,7 @@ template<template<class...> class F, class... U, class... T> struct eval_bound_a

} // namespace detail

template<template<class...> class F, class... T> struct mp_bind
BOOST_MP11_EXPORT template<template<class...> class F, class... T> struct mp_bind
{
#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, == 1915 )
private:
Expand All @@ -108,7 +118,7 @@ template<template<class...> class F, class... T> struct mp_bind
#endif
};

template<class Q, class... T> using mp_bind_q = mp_bind<Q::template fn, T...>;
BOOST_MP11_EXPORT template<class Q, class... T> using mp_bind_q = mp_bind<Q::template fn, T...>;

} // namespace mp11
} // namespace boost
Expand All @@ -117,4 +127,6 @@ template<class Q, class... T> using mp_bind_q = mp_bind<Q::template fn, T...>;
# pragma pop_macro( "I" )
#endif

#endif

#endif // #ifndef BOOST_MP11_BIND_HPP_INCLUDED
6 changes: 6 additions & 0 deletions include/boost/mp11/detail/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,10 @@
# define BOOST_MP11_DEPRECATED(msg)
#endif

#if defined(BOOST_USE_MODULES)
# define BOOST_MP11_EXPORT export
#else
# define BOOST_MP11_EXPORT
#endif

#endif // #ifndef BOOST_MP11_DETAIL_CONFIG_HPP_INCLUDED
4 changes: 2 additions & 2 deletions include/boost/mp11/detail/mp_append.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -307,11 +307,11 @@ struct append_value_lists

#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO)

template<class... L> using mp_append = typename mp_if_c<(sizeof...(L) > 0 && sizeof...(L) == mp_count_if<mp_list<L...>, mp_is_value_list>::value), detail::append_value_lists, detail::append_type_lists>::template fn<L...>;
BOOST_MP11_EXPORT template<class... L> using mp_append = typename mp_if_c<(sizeof...(L) > 0 && sizeof...(L) == mp_count_if<mp_list<L...>, mp_is_value_list>::value), detail::append_value_lists, detail::append_type_lists>::template fn<L...>;

#else

template<class... L> using mp_append = detail::append_type_lists::fn<L...>;
BOOST_MP11_EXPORT template<class... L> using mp_append = detail::append_type_lists::fn<L...>;

#endif

Expand Down
4 changes: 2 additions & 2 deletions include/boost/mp11/detail/mp_copy_if.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ template<template<class...> class L, class... T, template<class...> class P> str

} // namespace detail

template<class L, template<class...> class P> using mp_copy_if = typename detail::mp_copy_if_impl<L, P>::type;
template<class L, class Q> using mp_copy_if_q = mp_copy_if<L, Q::template fn>;
BOOST_MP11_EXPORT template<class L, template<class...> class P> using mp_copy_if = typename detail::mp_copy_if_impl<L, P>::type;
BOOST_MP11_EXPORT template<class L, class Q> using mp_copy_if_q = mp_copy_if<L, Q::template fn>;

} // namespace mp11
} // namespace boost
Expand Down
6 changes: 3 additions & 3 deletions include/boost/mp11/detail/mp_count.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ template<template<class...> class L, class... T, class V> struct mp_count_impl<L

} // namespace detail

template<class L, class V> using mp_count = typename detail::mp_count_impl<L, V>::type;
BOOST_MP11_EXPORT template<class L, class V> using mp_count = typename detail::mp_count_impl<L, V>::type;

// mp_count_if<L, P>
namespace detail
Expand Down Expand Up @@ -138,8 +138,8 @@ template<template<class...> class L, class... T, template<class...> class P> str

} // namespace detail

template<class L, template<class...> class P> using mp_count_if = typename detail::mp_count_if_impl<L, P>::type;
template<class L, class Q> using mp_count_if_q = mp_count_if<L, Q::template fn>;
BOOST_MP11_EXPORT template<class L, template<class...> class P> using mp_count_if = typename detail::mp_count_if_impl<L, P>::type;
BOOST_MP11_EXPORT template<class L, class Q> using mp_count_if_q = mp_count_if<L, Q::template fn>;

} // namespace mp11
} // namespace boost
Expand Down
14 changes: 7 additions & 7 deletions include/boost/mp11/detail/mp_defer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ template<class T, class E> struct mp_if_c_impl<false, T, E>

} // namespace detail

template<bool C, class T, class... E> using mp_if_c = typename detail::mp_if_c_impl<C, T, E...>::type;
template<class C, class T, class... E> using mp_if = typename detail::mp_if_c_impl<static_cast<bool>(C::value), T, E...>::type;
BOOST_MP11_EXPORT template<bool C, class T, class... E> using mp_if_c = typename detail::mp_if_c_impl<C, T, E...>::type;
BOOST_MP11_EXPORT template<class C, class T, class... E> using mp_if = typename detail::mp_if_c_impl<static_cast<bool>(C::value), T, E...>::type;

// mp_valid

Expand All @@ -55,7 +55,7 @@ struct mp_valid_impl<void_t<F<T...>>, F, T...>: mp_true {};

} // namespace detail

template<template<class...> class F, class... T> using mp_valid = typename detail::mp_valid_impl<void, F, T...>;
BOOST_MP11_EXPORT template<template<class...> class F, class... T> using mp_valid = typename detail::mp_valid_impl<void, F, T...>;

#else

Expand All @@ -73,11 +73,11 @@ template<template<class...> class F, class... T> struct mp_valid_impl

} // namespace detail

template<template<class...> class F, class... T> using mp_valid = typename detail::mp_valid_impl<F, T...>::type;
BOOST_MP11_EXPORT template<template<class...> class F, class... T> using mp_valid = typename detail::mp_valid_impl<F, T...>::type;

#endif

template<class Q, class... T> using mp_valid_q = mp_valid<Q::template fn, T...>;
BOOST_MP11_EXPORT template<class Q, class... T> using mp_valid_q = mp_valid<Q::template fn, T...>;

// mp_defer
namespace detail
Expand Down Expand Up @@ -105,11 +105,11 @@ template<template<class...> class F, class... T> struct mp_defer_cuda_workaround

#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 )

template<template<class...> class F, class... T> using mp_defer = typename detail::mp_defer_cuda_workaround< F, T...>::type;
BOOST_MP11_EXPORT template<template<class...> class F, class... T> using mp_defer = typename detail::mp_defer_cuda_workaround< F, T...>::type;

#else

template<template<class...> class F, class... T> using mp_defer = mp_if<mp_valid<F, T...>, detail::mp_defer_impl<F, T...>, detail::mp_no_type>;
BOOST_MP11_EXPORT template<template<class...> class F, class... T> using mp_defer = mp_if<mp_valid<F, T...>, detail::mp_defer_impl<F, T...>, detail::mp_no_type>;

#endif

Expand Down
4 changes: 2 additions & 2 deletions include/boost/mp11/detail/mp_fold.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@ struct mp_fold_impl<L<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...>, V, F>

} // namespace detail

template<class L, class V, template<class...> class F> using mp_fold = typename detail::mp_fold_impl<mp_rename<L, mp_list>, V, F>::type;
template<class L, class V, class Q> using mp_fold_q = mp_fold<L, V, Q::template fn>;
BOOST_MP11_EXPORT template<class L, class V, template<class...> class F> using mp_fold = typename detail::mp_fold_impl<mp_rename<L, mp_list>, V, F>::type;
BOOST_MP11_EXPORT template<class L, class V, class Q> using mp_fold_q = mp_fold<L, V, Q::template fn>;

} // namespace mp11
} // namespace boost
Expand Down
2 changes: 1 addition & 1 deletion include/boost/mp11/detail/mp_front.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ template<template<auto...> class L, auto A1, auto... A> struct mp_front_impl<L<A

} // namespace detail

template<class L> using mp_front = typename detail::mp_front_impl<L>::type;
BOOST_MP11_EXPORT template<class L> using mp_front = typename detail::mp_front_impl<L>::type;

} // namespace mp11
} // namespace boost
Expand Down
3 changes: 2 additions & 1 deletion include/boost/mp11/detail/mp_is_list.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
// http://www.boost.org/LICENSE_1_0.txt

#include <boost/mp11/integral.hpp>
#include <boost/mp11/detail/config.hpp>

namespace boost
{
Expand All @@ -31,7 +32,7 @@ template<template<class...> class L, class... T> struct mp_is_list_impl<L<T...>>

} // namespace detail

template<class L> using mp_is_list = typename detail::mp_is_list_impl<L>::type;
BOOST_MP11_EXPORT template<class L> using mp_is_list = typename detail::mp_is_list_impl<L>::type;

} // namespace mp11
} // namespace boost
Expand Down
2 changes: 1 addition & 1 deletion include/boost/mp11/detail/mp_is_value_list.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ template<template<auto...> class L, auto... A> struct mp_is_value_list_impl<L<A.

} // namespace detail

template<class L> using mp_is_value_list = typename detail::mp_is_value_list_impl<L>::type;
BOOST_MP11_EXPORT template<class L> using mp_is_value_list = typename detail::mp_is_value_list_impl<L>::type;

} // namespace mp11
} // namespace boost
Expand Down
4 changes: 3 additions & 1 deletion include/boost/mp11/detail/mp_list.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
// See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt

#include <boost/mp11/detail/config.hpp>

namespace boost
{
namespace mp11
{

// mp_list<T...>
template<class... T> struct mp_list
BOOST_MP11_EXPORT template<class... T> struct mp_list
{
};

Expand Down
2 changes: 1 addition & 1 deletion include/boost/mp11/detail/mp_list_v.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace mp11
#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO)

// mp_list_v<A...>
template<auto... A> struct mp_list_v
BOOST_MP11_EXPORT template<auto... A> struct mp_list_v
{
};

Expand Down
4 changes: 2 additions & 2 deletions include/boost/mp11/detail/mp_map_find.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ template<template<class...> class M, class... T, class K> struct mp_map_find_imp

} // namespace detail

template<class M, class K> using mp_map_find = typename detail::mp_map_find_impl<M, K>::type;
BOOST_MP11_EXPORT template<class M, class K> using mp_map_find = typename detail::mp_map_find_impl<M, K>::type;

#else

Expand Down Expand Up @@ -111,7 +111,7 @@ template<template<class...> class M, class... T, class K> struct mp_map_find_imp

} // namespace detail

template<class M, class K> using mp_map_find = typename detail::mp_map_find_impl<M, K>::type;
BOOST_MP11_EXPORT template<class M, class K> using mp_map_find = typename detail::mp_map_find_impl<M, K>::type;

#endif

Expand Down
8 changes: 4 additions & 4 deletions include/boost/mp11/detail/mp_min_element.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ template<template<class...> class P> struct select_min

} // namespace detail

template<class L, template<class...> class P> using mp_min_element = mp_fold_q<mp_rest<L>, mp_first<L>, detail::select_min<P>>;
template<class L, class Q> using mp_min_element_q = mp_min_element<L, Q::template fn>;
BOOST_MP11_EXPORT template<class L, template<class...> class P> using mp_min_element = mp_fold_q<mp_rest<L>, mp_first<L>, detail::select_min<P>>;
BOOST_MP11_EXPORT template<class L, class Q> using mp_min_element_q = mp_min_element<L, Q::template fn>;

// mp_max_element<L, P>
namespace detail
Expand All @@ -42,8 +42,8 @@ template<template<class...> class P> struct select_max

} // namespace detail

template<class L, template<class...> class P> using mp_max_element = mp_fold_q<mp_rest<L>, mp_first<L>, detail::select_max<P>>;
template<class L, class Q> using mp_max_element_q = mp_max_element<L, Q::template fn>;
BOOST_MP11_EXPORT template<class L, template<class...> class P> using mp_max_element = mp_fold_q<mp_rest<L>, mp_first<L>, detail::select_max<P>>;
BOOST_MP11_EXPORT template<class L, class Q> using mp_max_element_q = mp_max_element<L, Q::template fn>;

} // namespace mp11
} // namespace boost
Expand Down
4 changes: 2 additions & 2 deletions include/boost/mp11/detail/mp_plus.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// http://www.boost.org/LICENSE_1_0.txt

#include <boost/mp11/detail/config.hpp>
#include <type_traits>
#include <boost/mp11/detail/std/type_traits.hpp>

namespace boost
{
Expand Down Expand Up @@ -76,7 +76,7 @@ template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, c

} // namespace detail

template<class... T> using mp_plus = typename detail::mp_plus_impl<T...>::type;
BOOST_MP11_EXPORT template<class... T> using mp_plus = typename detail::mp_plus_impl<T...>::type;

} // namespace mp11
} // namespace boost
Expand Down
Loading