Coder Social home page Coder Social logo

mpl's People

Contributors

belcourt avatar beman avatar brunocodutra avatar dabrahams avatar danieljames avatar denizthatmenace avatar douggregor avatar eldiener avatar ericniebler avatar fcacciola avatar grafikrobot avatar hkaiser avatar imikejackson avatar jeking3 avatar jfalcou avatar jwakely avatar jzmaddock avatar lastique avatar mclow avatar pdimov avatar pfultz2 avatar robinlinden avatar sdarwin avatar steveire avatar straszheim avatar swatanabe avatar toonknapen avatar trel avatar tschw avatar vprus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mpl's Issues

Unnecessary parenthesis warning in gcc-8.0.0 powerpc matrix build

See:

http://www.boost.org/development/tests/develop/output/trippels-powerpc64le-gcc-8-0-date_time-gcc-8-0-0-warnings.html

Warnings: trippels-powerpc64le-gcc-8.0 - date_time / gcc-8.0.0
Rev c1a20921c54ad6354c3c93e532e76c62b5c598a9 / Sat, 06 Jan 2018 13:35:45 +0000

...

testc_local_adjustor
../boost/mpl/assert.hpp:188:21: warning: unnecessary parentheses in declaration of ???assert_arg??? [-Wparentheses]
../boost/mpl/assert.hpp:193:21: warning: unnecessary parentheses in declaration of ???assert_not_arg??? [-Wparentheses]
                
testclock
../boost/mpl/assert.hpp:188:21: warning: unnecessary parentheses in declaration of ???assert_arg??? [-Wparentheses]
../boost/mpl/assert.hpp:193:21: warning: unnecessary parentheses in declaration of ???assert_not_arg??? [-Wparentheses]
                
... (many more)

Compile error with gcc 8.3.1 and C++17 mode

Am seeing the following compile error in code that includes <boost/algorithm/string/predicate.hpp> with gcc 8.3.1 (the version from the latest RHEL7 devtoolset-8 package) and with the -std=c++17 flag. This is with boost 1.69 but the relevant code doesn't seem to have changed.

In file included from /usr/include/boost169/boost/mpl/aux_/include_preprocessed.hpp:37,
                 from /usr/include/boost169/boost/mpl/bind.hpp:50,
                 from /usr/include/boost169/boost/mpl/lambda.hpp:18,
                 from /usr/include/boost169/boost/mpl/apply.hpp:25,
                 from /usr/include/boost169/boost/iterator/iterator_facade.hpp:36,
                 from /usr/include/boost169/boost/range/iterator_range_core.hpp:27,
                 from /usr/include/boost169/boost/range/iterator_range.hpp:13,
                 from /usr/include/boost169/boost/range/as_literal.hpp:22,
                 from /usr/include/boost169/boost/algorithm/string/predicate.hpp:19,
...
/usr/include/boost169/boost/mpl/aux_/preprocessed/gcc/bind.hpp:466:67: error: template parameter 'template<class T1, class T2, class T3> class F'
 template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
                                                                   ^
In file included from /usr/include/boost169/boost/mpl/aux_/include_preprocessed.hpp:37,
                 from /usr/include/boost169/boost/mpl/quote.hpp:45,
                 from /usr/include/boost169/boost/mpl/aux_/full_lambda.hpp:25,
                 from /usr/include/boost169/boost/mpl/lambda.hpp:22,
                 from /usr/include/boost169/boost/mpl/apply.hpp:25,
                 from /usr/include/boost169/boost/iterator/iterator_facade.hpp:36,
                 from /usr/include/boost169/boost/range/iterator_range_core.hpp:27,
                 from /usr/include/boost169/boost/range/iterator_range.hpp:13,
                 from /usr/include/boost169/boost/range/as_literal.hpp:22,
                 from /usr/include/boost169/boost/algorithm/string/predicate.hpp:19,
...
/usr/include/boost169/boost/mpl/aux_/preprocessed/gcc/quote.hpp:64:8: error: redeclared here as 'template<class P1, class P2, class P3> class F'
 struct quote3
        ^~~~~~

It appears this compiler doesn't like the forward declaration using different template argument names from the actual declaration?

Another similar mention of this issue here: https://www.reddit.com/r/cpp/comments/b6wsyy/c_boostunits_survey_on_lack_of_adoption_of_uom/ejtdcgu/?utm_source=share&utm_medium=web2x

How to make specialization of `boost::mpl::sequence_tag` when only trait available?

I have no problems when i know template of type, that will be passed into boost::mpl::sequence_tag:

namespace boost { namespace mpl
{
    template <typename>
    struct sequence_tag;

    template <typename... Elements>
    struct sequence_tag<std::tuple<Elements...>>
    {
        typedef fusion::fusion_sequence_tag type;
    };
}}

But my case is when have no access for std::tuple template and i only have an is_tuple trait:

namespace boost { namespace mpl
{
    template <typename, typename=void>
    struct sequence_tag;

    template <typename T>
    struct sequence_tag<T, std::enable_if_t<is_tuple<T>::value>>  // won't work
    {
        typedef fusion::fusion_sequence_tag type;
    };
}}

SFINAE is not working on boost::mpl::sequence_tag, does it have an another way?

boost_mpl_preprocess.py is missing python3 support

This and the depending scripts are not working with Ubuntu 22.04 anymore.
My default sym-link for python at least is pointing to Python 3.10.4

Already tested with my fix which I will provide in a PR:

python --version
Python 3.10.4

I tested my patches with python 2.7.x as well and they seem to work with Ubuntu 20.04, but this is not the python version that we should use anymore.
Feel free to comment. :)

Invalid XHTML in docs

The docs contain things like:

<h1><a class="toc-backref" href="./categorized-index.html#id1612"><a class="subsection-title" href="#concepts" name="concepts">Concepts</a></a></h1>

This is invalid, you cannot nest an <a> element inside another <a> element.

<ul class="simple" id="value-part">
<span id="key-part"></span><li>A <em>key</em> is a part of the element type used to identify and retrieve

This is invalid, you cannot have a <span> child of <ul>.

<pre class="literal-block">
typedef <a href="./begin.html" class="identifier">begin</a>&lt;Sequence&gt;::type i<sub>1</sub>;

You cannot have <sub> inside <pre> (there are other cases like this with <sup> too).

<ul class="toc simple" id="outline">
<li><a class="reference internal" href="./sequences.html" id="id1393">Sequences</a><ul class="toc" id="outline">
<li><a class="reference internal" href="./concepts.html" id="id1394">Concepts</a><ul class="toc" id="outline">

You cannot have multiple elements with the same id attribute.

<table border="1" class="docutils table" id="base">
<span id="second"></span><span id="first"></span><colgroup>
<col width="39%" />
<col width="61%" />
</colgroup>
<thead valign="bottom">

You can't have a <span> as a child of <table>.

These validation errors cause problems for packagers, as invalid XML is a potential security risk.

Either don't pretend the files are XML (e.g. change the doctype to HTML 5), or validate them and fix the errors please.

Some mpl code does not work when char type is "unsigned char" by default

When compiling libs/mpl/test/char.cpp on AIX with GCC 9.3, where "char" type is "unsigned char" by default, I have the following error:

   "g++"  -fvisibility-inlines-hidden -fPIC -maix32 -pthread -mcmodel=large -O3 -finline-functions -Wno-inline -Wall -fvisibility=hidden -O2 -ffp-contract=off 
   -ftls-model=initial-exec   -DBOOST_ALL_NO_LIB=1 -DBOOST_BEAST_ALLOW_DEPRECATED -DBOOST_BEAST_SEPARATE_COMPILATION -DNDEBUG  -I".." -c
   -o "../bin.v2/libs/mpl/test/char.test/gcc-9/release/threading-multi/visibility-hidden/char.o" "../libs/mpl/test/char.cpp"

In file included from ../boost/mpl/aux_/test/assert.hpp:17,
                from ../boost/mpl/aux_/test.hpp:19,
                from ../libs/mpl/test/integral_wrapper_test.hpp:15,
                from ../libs/mpl/test/char.cpp:17:
../libs/mpl/test/char.cpp: In function 'void test20()':
../libs/mpl/test/char.cpp:22:33: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
  22 | #   define WRAPPER(T, i) char_< i >
     |                                   ^

Looking at details, the exact error is:

./libs/mpl/test/char.cpp.E.cpp: In function 'void test20()':
../libs/mpl/test/char.cpp.E.cpp:30698:162: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
30698 | n_line_23 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) ( is_same< prior< char_<0> >::type, char_<0 -1> > ))0, 1 ) ) ) }; }

where -1 is used for creating a char, which is "unsigned char" on AIX (and on other systems). Thus, creating a char with value -1 is forbidden.

I've already seen this issue on other tests of Boost.
The possible solutions are:

  1. manage "char" so that it works either with char="signed char" or with char="unsigned char". However, since the C/C++ says that the "char" type is "undefined", that depends on how each OS has implemented the details of the char type (like converting a negatif floating point value to an "unsigned" integer/char/short).
  2. replace "char" by "signed char" everywhere.
  3. do not use negative value

Second solution seems to be the more appropriate solution, since it will work everywhere. Unless using negative values is required.

win + pure clang (not clang-cl) build error

Error:

d:\dev\cppan2\client2\.sw\rsp>8169297309854606892.bat -w
[sw.client.manager-0.4.0]/src/sw/manager/source.cpp
In file included from D:/dev/cppan2/client2/src/sw/manager/source.cpp:12:
In file included from D:/dev/cppan2/client2/.s/pkg/07/63/651e/src/sdir/src/date_time/include\primitives/date_time.h:9:
In file included from D:/dev/cppan2/client2/.s/pkg/d5/f9/3578/src/sdir/include\boost/date_time/posix_time/posix_time.hpp:24:
In file included from D:/dev/cppan2/client2/.s/pkg/d5/f9/3578/src/sdir/include\boost/date_time/posix_time/time_formatters.hpp:12:
In file included from D:/dev/cppan2/client2/.s/pkg/d5/f9/3578/src/sdir/include\boost/date_time/gregorian/gregorian.hpp:31:
In file included from D:/dev/cppan2/client2/.s/pkg/d5/f9/3578/src/sdir/include\boost/date_time/gregorian/gregorian_io.hpp:16:
In file included from D:/dev/cppan2/client2/.s/pkg/d5/f9/3578/src/sdir/include\boost/date_time/date_facet.hpp:17:
In file included from D:/dev/cppan2/client2/.s/pkg/f7/7f/7cb2/src/sdir/include\boost/algorithm/string/replace.hpp:16:
In file included from D:/dev/cppan2/client2/.s/pkg/7d/f2/028d/src/sdir/include\boost/range/iterator_range_core.hpp:27:
In file included from D:/dev/cppan2/client2/.s/pkg/c0/af/5f1e/src/sdir/include\boost/iterator/iterator_facade.hpp:11:
In file included from D:/dev/cppan2/client2/.s/pkg/c0/af/5f1e/src/sdir/include\boost/iterator/interoperable.hpp:11:
In file included from D:/dev/cppan2/client2/.s/pkg/3d/f2/f30f/src/sdir/include\boost/mpl/or.hpp:43:
D:/dev/cppan2/client2/.s/pkg/3d/f2/f30f/src/sdir/include\boost/mpl/aux_/include_preprocessed.hpp:37:13: fatal error: 'boost/mpl/aux_/preprocessed/plain/||.hpp' file not found
#   include BOOST_PP_STRINGIZE(boost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/cppan2/client2/.s/pkg/ba/e0/f079/src/sdir/include\boost/preprocessor/stringize.hpp:28:38: note: expanded from macro 'BOOST_PP_STRINGIZE'
#    define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text)
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/cppan2/client2/.s/pkg/ba/e0/f079/src/sdir/include\boost/preprocessor/stringize.hpp:32:36: note: expanded from macro 'BOOST_PP_STRINGIZE_I'
# define BOOST_PP_STRINGIZE_I(...) #__VA_ARGS__
                                   ^~~~~~~~~~~~
<scratch space>:104:1: note: expanded from here
"boost/mpl/aux_/preprocessed/plain/||.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

This is caused by following line in files: and.hpp, bitand.hpp, or.hpp, bitor.hpp:

#if defined(_MSC_VER) && !defined(__clang__)

This is not true anymore today. Commenting out the second conditions helps.
Pure clang defines _MSC_VER plus __clang__ on windows.

-Wunused-variable on BOOST_MPL_ASSERT for clang-cl

I've noticed the following issue when enabling -Wunused-variable on a Window project using clang-cl.

1>boost/mpl/for_each.hpp(99,5): error : unused variable 'mpl_assertion_in_line_99' [-Werror,-Wunused-variable]
1> BOOST_MPL_ASSERT(( is_sequence ));
1> ^
1>boost/mpl/assert.hpp(287,7): note: expanded from macro 'BOOST_MPL_ASSERT'
1> , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof(
1> ^
1>boost/preprocessor/cat.hpp(22,32): note: expanded from macro 'BOOST_PP_CAT'
1>boost/preprocessor/cat.hpp(29,34): note: expanded from macro 'BOOST_PP_CAT_I'
1>(105,1): note: expanded from here
1>private_code.cpp: note: in instantiation of function template specialization 'boost::mpl::for_each<boost::mpl::set<Enum::A, Enum::B, Enum::C, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, (anonymous namespace)::Function<wchar_t *> >' requested here
1> mpl::for_each(tuple);
1> ^

I've tried to reproduce on compiler explorer, however, clang-cl ain't available.
Would it be possible to add [[maybe_unused]] when supported, to the line 280 of assert.hpp?

compilation fails with clang 16 when enumerated type used in AUX_WRAPPER_INST

using boost 1.79 and clang 16 I get the following compilation errors when trying to define the next/prev types of an enumerated type in the range [0,3]:

In file included from libs/python/src/converter/builtin_converters.cpp:21:
In file included from ./boost/cast.hpp:18:
In file included from ./boost/numeric/conversion/cast.hpp:33:
In file included from ./boost/numeric/conversion/converter.hpp:13:
In file included from ./boost/numeric/conversion/conversion_traits.hpp:13:
In file included from ./boost/numeric/conversion/detail/conversion_traits.hpp:18:
In file included from ./boost/numeric/conversion/detail/int_float_mixture.hpp:19:
In file included from ./boost/mpl/integral_c.hpp:32:
./boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for this enumeration type [-Wenum-constexpr-conversion]
./boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
#   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
In file included from libs/python/src/converter/builtin_converters.cpp:21:
In file included from ./boost/cast.hpp:18:
In file included from ./boost/numeric/conversion/cast.hpp:33:
In file included from ./boost/numeric/conversion/converter.hpp:13:
In file included from ./boost/numeric/conversion/conversion_traits.hpp:13:
In file included from ./boost/numeric/conversion/detail/conversion_traits.hpp:18:
In file included from ./boost/numeric/conversion/detail/int_float_mixture.hpp:19:
In file included from ./boost/mpl/integral_c.hpp:32:
./boost/mpl/aux_/integral_wrapper.hpp:72:31: error: integer value 4 is outside the valid range of values [0, 3] for this enumeration type [-Wenum-constexpr-conversion]
    typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next;
                              ^
./boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
#   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
                                              ^

boost::mpl::integral_c broken in Clang trunk

Clang has recently addressed an issue where it failed to diagnose the UB of casting an out-of-range integer to an enum in a constant expression.

Since undefined behavior is not allowed in a constant expression, Clang now prohibits enum test { zero }; constexpr int g = static_cast<test>(-1); with "error: constexpr variable 'g' must be initialized by a constant expression; note: integer value -1 is outside the valid range of values [0, 1] for this enumeration type"

This change breaks boost::mpl::integral_c, since it does exactly that. Demonstrated with example, below (and on godbolt)

#include <boost/mpl/integral_c.hpp>
enum test { zero, one };
boost::mpl::integral_c<test, zero> m;

Originally discovered with a program that was using the boost::numeric library, which in turn uses mpl like the above example.

#include <boost/numeric/conversion/udt_builtin_mixture.hpp>
boost::numeric::udt_builtin_mixture<int, int> m;

`push_back<vector20<...>, X>::type` on MSVC triggers static assert

The following code is fine on GCC and Clang, but fails on MSVC and ICC.

#include <boost/mpl/vector.hpp>
#include <boost/mpl/push_back.hpp>

struct X;

using vec = boost::mpl::vector<X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X>;
using test = boost::mpl::push_back<vec, X>::type;

https://godbolt.org/z/w-yTto

This inconsistency confuses people: 1) https://stackoverflow.com/questions/55900932/issue-with-x3-and-ms-vs2017 2) boostorg/spirit#515

test/integral_c.cpp:22:40: error: narrowing conversion of '-1' from 'int' to 'char' (s390 container: bigendian)

gcc.compile.c++ ../../bin.v2/libs/mpl/test/integral_c.test/gcc-11/debug/threading-multi/visibility-hidden/integral_c.o
In file included from ../../boost/mpl/aux_/test/assert.hpp:17,
                 from ../../boost/mpl/aux_/test.hpp:19,
                 from test/integral_wrapper_test.hpp:15,
                 from test/integral_c.cpp:17:
test/integral_c.cpp: In function 'void test20()':
test/integral_c.cpp:22:40: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
   22 | #   define WRAPPER(T, i) integral_c<T,i>
      |                                        ^
../../boost/mpl/assert.hpp:60:58: note: in definition of macro 'BOOST_MPL_AUX_ASSERT_CONSTANT'
   60 | #   define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
      |                                                          ^~~~
../../boost/mpl/aux_/test/assert.hpp:20:41: note: in expansion of macro 'BOOST_MPL_ASSERT'
   20 | #define MPL_ASSERT(pred)                BOOST_MPL_ASSERT(pred)
      |                                         ^~~~~~~~~~~~~~~~
test/integral_wrapper_test.hpp:57:7: note: in expansion of macro 'MPL_ASSERT'
   57 |     { MPL_ASSERT(( is_same< prior< WRAPPER(T,i) >::type, WRAPPER(T,i-1) > )); } \
      |       ^~~~~~~~~~
test/integral_wrapper_test.hpp:57:58: note: in expansion of macro 'WRAPPER'
   57 |     { MPL_ASSERT(( is_same< prior< WRAPPER(T,i) >::type, WRAPPER(T,i-1) > )); } \
      |                                                          ^~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:18:36: note: in expansion of macro 'INTEGRAL_WRAPPER_TEST'
   18 | # define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d)
      |                                    ^
../../boost/preprocessor/repetition/limits/repeat_256.hpp:19:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_1'
   19 | # define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:20:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_2'
   20 | # define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:21:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_3'
   21 | # define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:22:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_4'
   22 | # define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:23:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_5'
   23 | # define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:24:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_6'
   24 | # define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:25:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_7'
   25 | # define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:26:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_8'
   26 | # define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:27:37: note: in expansion of macro 'BOOST_PP_REPEAT_1_9'
   27 | # define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
      |                                     ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/repeat.hpp:44:39: note: in expansion of macro 'BOOST_PP_REPEAT_1_10'
   44 | # define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)
      |                                       ^~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/repeat.hpp:39:37: note: in expansion of macro 'BOOST_PP_REPEAT_1_I'
   39 | # define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
      |                                     ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/cat.hpp:29:34: note: in expansion of macro 'BOOST_PP_REPEAT_1'
   29 | #    define BOOST_PP_CAT_I(a, b) a ## b
      |                                  ^
../../boost/preprocessor/cat.hpp:22:32: note: in expansion of macro 'BOOST_PP_CAT_I'
   22 | #    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
      |                                ^~~~~~~~~~~~~~
../../boost/preprocessor/repetition/repeat.hpp:30:26: note: in expansion of macro 'BOOST_PP_CAT'
   30 | # define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
      |                          ^~~~~~~~~~~~
test/integral_c.cpp:25:5: note: in expansion of macro 'BOOST_PP_REPEAT'
   25 |     BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
      |     ^~~~~~~~~~~~~~~
test/integral_wrapper_test.hpp:57:73: error: template argument 2 is invalid
   57 |     { MPL_ASSERT(( is_same< prior< WRAPPER(T,i) >::type, WRAPPER(T,i-1) > )); } \
      |                                                                         ^
../../boost/mpl/assert.hpp:60:58: note: in definition of macro 'BOOST_MPL_AUX_ASSERT_CONSTANT'
   60 | #   define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
      |                                                          ^~~~
../../boost/mpl/aux_/test/assert.hpp:20:41: note: in expansion of macro 'BOOST_MPL_ASSERT'
   20 | #define MPL_ASSERT(pred)                BOOST_MPL_ASSERT(pred)
      |                                         ^~~~~~~~~~~~~~~~
test/integral_wrapper_test.hpp:57:7: note: in expansion of macro 'MPL_ASSERT'
   57 |     { MPL_ASSERT(( is_same< prior< WRAPPER(T,i) >::type, WRAPPER(T,i-1) > )); } \
      |       ^~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:18:36: note: in expansion of macro 'INTEGRAL_WRAPPER_TEST'
   18 | # define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d)
      |                                    ^
../../boost/preprocessor/repetition/limits/repeat_256.hpp:19:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_1'
   19 | # define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:20:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_2'
   20 | # define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:21:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_3'
   21 | # define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:22:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_4'
   22 | # define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:23:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_5'
   23 | # define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:24:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_6'
   24 | # define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:25:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_7'
   25 | # define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:26:36: note: in expansion of macro 'BOOST_PP_REPEAT_1_8'
   26 | # define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
      |                                    ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/limits/repeat_256.hpp:27:37: note: in expansion of macro 'BOOST_PP_REPEAT_1_9'
   27 | # define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
      |                                     ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/repeat.hpp:44:39: note: in expansion of macro 'BOOST_PP_REPEAT_1_10'
   44 | # define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)
      |                                       ^~~~~~~~~~~~~~~~~~
../../boost/preprocessor/repetition/repeat.hpp:39:37: note: in expansion of macro 'BOOST_PP_REPEAT_1_I'
   39 | # define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
      |                                     ^~~~~~~~~~~~~~~~~~~
../../boost/preprocessor/cat.hpp:29:34: note: in expansion of macro 'BOOST_PP_REPEAT_1'
   29 | #    define BOOST_PP_CAT_I(a, b) a ## b
      |                                  ^
../../boost/preprocessor/cat.hpp:22:32: note: in expansion of macro 'BOOST_PP_CAT_I'
   22 | #    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
      |                                ^~~~~~~~~~~~~~
../../boost/preprocessor/repetition/repeat.hpp:30:26: note: in expansion of macro 'BOOST_PP_CAT'
   30 | # define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
      |                          ^~~~~~~~~~~~
test/integral_c.cpp:25:5: note: in expansion of macro 'BOOST_PP_REPEAT'
   25 |     BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
      |     ^~~~~~~~~~~~~~~
../../boost/mpl/assert.hpp: In instantiation of 'struct mpl_::assert_arg_pred_not<int>':
../../boost/mpl/assert.hpp:210:1:   required by substitution of 'template<class Pred> mpl_::assert<false> mpl_::assert_arg(void (*)(Pred), typename mpl_::assert_arg_pred_not<Pred>::type) [with Pred = int]'
test/integral_c.cpp:25:5:   required from here
../../boost/mpl/assert.hpp:182:30: error: 'int' is not a class, struct, or union type
  182 |     typedef typename P::type p_type;
      |                              ^~~~~~

    "g++"   -fvisibility-inlines-hidden -fPIC -pthread -O0 -fno-inline -Wall -g -fvisibility=hidden -Wextra -Wno-variadic-macros -Wshadow -DBOOST_ALL_NO_LIB=1  -I"../.."  -c -o "../../bin.v2/libs/mpl/test/integral_c.test/gcc-11/debug/threading-multi/visibility-hidden/integral_c.o" "test/integral_c.cpp"

...failed gcc.compile.c++ ../../bin.v2/libs/mpl/test/integral_c.test/gcc-11/debug/threading-multi/visibility-hidden/integral_c.o...

MPL Overloads: template<> missing

Compiling boost MPL with (NVCC 10.1.168 and) GCC 6.4.0 and -Wall -Wextra throws the following warnings. Mainly -Wnon-template-friend and operatorXY ... declares a non-template function -- add <> to refer to a template instance

Generally, the macros for overloads seem to lack template <> and similar annotations:

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(54): warning: "boost::mpl::aux::type_wrapper<T> operator/(const boost::mpl::m_item<Key, T, Base> &, boost::mpl::aux::type_wrapper<Key> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(55): warning: "boost::mpl::aux::type_wrapper<boost::mpl::pair<Key, T>> operator|(const boost::mpl::m_item<Key, T, Base> &, boost::mpl::next<Base::order>::type *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(56): warning: "char (&operator||(const boost::mpl::m_item<Key, T, Base> &, boost::mpl::aux::type_wrapper<Key> *))[boost::mpl::next<Base::order>::type::value]" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(71): warning: "boost::mpl::aux::type_wrapper<mpl_::void_> operator/(const boost::mpl::m_mask<Key, Base> &, boost::mpl::aux::type_wrapper<Key> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(72): warning: "boost::mpl::aux::type_wrapper<mpl_::void_> operator|(const boost::mpl::m_mask<Key, Base> &, boost::mpl::x_order_impl<Base, Key>::type *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(47): warning: "char (&operator||(const boost::mpl::s_item<T, Base> &, boost::mpl::aux::type_wrapper<T> *))[boost::mpl::next<Base::order>::type::value]" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(48): warning: "boost::mpl::aux::no_tag operator%(const boost::mpl::s_item<T, Base> &, boost::mpl::aux::type_wrapper<T> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(63): warning: "boost::mpl::aux::yes_tag operator%(const boost::mpl::s_mask<T, Base> &, boost::mpl::aux::type_wrapper<T> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(77): warning: "boost::mpl::aux::no_tag operator%(const boost::mpl::s_unmask<T, Base> &, boost::mpl::aux::type_wrapper<T> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(54): warning: "boost::mpl::aux::type_wrapper<T> operator/(const boost::mpl::m_item<Key, T, Base> &, boost::mpl::aux::type_wrapper<Key> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(55): warning: "boost::mpl::aux::type_wrapper<boost::mpl::pair<Key, T>> operator|(const boost::mpl::m_item<Key, T, Base> &, boost::mpl::next<Base::order>::type *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(56): warning: "char (&operator||(const boost::mpl::m_item<Key, T, Base> &, boost::mpl::aux::type_wrapper<Key> *))[boost::mpl::next<Base::order>::type::value]" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(71): warning: "boost::mpl::aux::type_wrapper<mpl_::void_> operator/(const boost::mpl::m_mask<Key, Base> &, boost::mpl::aux::type_wrapper<Key> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp(72): warning: "boost::mpl::aux::type_wrapper<mpl_::void_> operator|(const boost::mpl::m_mask<Key, Base> &, boost::mpl::x_order_impl<Base, Key>::type *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(47): warning: "char (&operator||(const boost::mpl::s_item<T, Base> &, boost::mpl::aux::type_wrapper<T> *))[boost::mpl::next<Base::order>::type::value]" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(48): warning: "boost::mpl::aux::no_tag operator%(const boost::mpl::s_item<T, Base> &, boost::mpl::aux::type_wrapper<T> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(63): warning: "boost::mpl::aux::yes_tag operator%(const boost::mpl::s_mask<T, Base> &, boost::mpl::aux::type_wrapper<T> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp(77): warning: "boost::mpl::aux::no_tag operator%(const boost::mpl::s_unmask<T, Base> &, boost::mpl::aux::type_wrapper<T> *)" declares a non-template function -- add <> to refer to a template instance

linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp: At global scope:
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp:54:83: warning: friend declaration 'boost::mpl::aux::type_wrapper<Key> boost::mpl::operator/(const boost::mpl::m_item<Key, T, Base>&, boost::mpl::aux::type_wrapper<T>*)' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper<T>, VALUE_BY_KEY, m_item, aux::type_wrapper<Key>* );
                                                                                   ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp:54:83: note: (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) 
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp:55:77: warning: friend declaration 'boost::mpl::aux::type_wrapper<boost::mpl::pair<T1, T2> > boost::mpl::operator|(const boost::mpl::m_item<Key, T, Base>&, boost::mpl::m_item<Key, T, Base>::order*)' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper<item>, ITEM_BY_ORDER, m_item, order* );
                                                                             ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp:56:72: warning: friend declaration 'char (& boost::mpl::operator||(const boost::mpl::m_item<Key, T, Base>&, boost::mpl::aux::type_wrapper<T>*))[boost::mpl::m_item<Key, T, Base>::order:: value]' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_MAP_OVERLOAD( order_tag_, ORDER_BY_KEY, m_item, aux::type_wrapper<Key>* );
                                                                        ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp:71:93: warning: friend declaration 'boost::mpl::aux::type_wrapper<mpl_::void_> boost::mpl::operator/(const boost::mpl::m_mask<Key, Base>&, boost::mpl::aux::type_wrapper<T>*)' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper<void_>, VALUE_BY_KEY, m_mask, aux::type_wrapper<Key>* );
                                                                                             ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/map/aux_/item.hpp:72:79: warning: friend declaration 'boost::mpl::aux::type_wrapper<mpl_::void_> boost::mpl::operator|(const boost::mpl::m_mask<Key, Base>&, boost::mpl::m_mask<Key, Base>::key_order_*)' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper<void_>, ITEM_BY_ORDER, m_mask, key_order_* );
                                                                               ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp:47:70: warning: friend declaration 'char (& boost::mpl::operator||(const boost::mpl::s_item<T, Base>&, boost::mpl::aux::type_wrapper<T>*))[boost::mpl::s_item<T, Base>::order:: value]' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_SET_OVERLOAD( order_tag_, ORDER_BY_KEY, s_item, aux::type_wrapper<T>* );
                                                                      ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp:48:70: warning: friend declaration 'char (& boost::mpl::operator%(const boost::mpl::s_item<T, Base>&, boost::mpl::aux::type_wrapper<T>*))[1]' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_item, aux::type_wrapper<T>* );
                                                                      ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp:63:71: warning: friend declaration 'char (& boost::mpl::operator%(const boost::mpl::s_mask<T, Base>&, boost::mpl::aux::type_wrapper<T>*))[2]' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_SET_OVERLOAD( aux::yes_tag, IS_MASKED, s_mask, aux::type_wrapper<T>* );
                                                                       ^
linux-rhel7-ppc64le/gcc-6.4.0/boost-1.66.0-nxj2e2htxvm25phwnxtwbw3bajgcryko/include/boost/mpl/set/aux_/item.hpp:77:72: warning: friend declaration 'char (& boost::mpl::operator%(const boost::mpl::s_unmask<T, Base>&, boost::mpl::aux::type_wrapper<T>*))[1]' declares a non-template function [-Wnon-template-friend]
     BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_unmask, aux::type_wrapper<T>* );

Seen with PIConGPU 0.5.0-dev as of ComputationalRadiationPhysics/picongpu@1347ebb (and way before as well).

Small example with NVCC 10.1 that triggers this via the boost property tree:
https://cuda.godbolt.org/z/ir3p6i

#include <boost/property_tree/ptree.hpp>

int main()
{
  using boost::property_tree::ptree;
  ptree pt;
}

Modular Boost C++ Libraries Request

We are in the process of making B2 build changes to all of the B2 build files
to support "modular" consumption of the Boost Libraries by users. See this list
post for some details: https://lists.boost.org/Archives/boost/2024/01/255704.php

The process requires making a variety of changes to make each Boost library
independent of the super-project structure. But the changes do not remove the
super-project structure or the comprehensive Boost release. The changes make
solely make it possible, optionally, for users, like package manages, to easily
consume libraries individually.

Generally the changes include:

  • Adding a libroot/build.jam.
  • Porting any functionality from libroot/jamfile to libroot/build.jam.
  • Moving boost-install declaration from libroot/build/jamfile is applicable.
  • Adjusting other B2 build files in the library, like test/jamfile, as needed.
  • Possible changes to C++ source files to remove includes relative to the
    super-project boostroot location.

Some examples of such changes:

We are asking how you would like us to handle the changes. We would prefer if
you allow the owners of the Boost.org GitHub project to make changes to B2
build files, as needed, to accomplish the changes. But understand
that you may want to manage the proposed changes yourself.

We previously sent emails to all known maintainers to fill out a form with their
preference. We are contacting you in this issue as we have not gotten a response
to that email. You can see the ongoing responses for that form and the responses
to these issues here https://github.com/users/grafikrobot/projects/1/views/6

We are now asking if you can reply directly to this issue to indicate your
preference of handling the changes. Please supply a response to this question
and close the issue (so that we can verify you are a maintainer).

How would you like the build changes to be processed?

  1. Pull request, reviewed and merged by a BOOSTORG OWNER.
  2. Pull request, reviewed and merged by YOU.
  3. Other. (please specify details in the reply)

Also please indicate any special instructions you want us to consider. Or other
information you want us to be aware of.

Thanks you, René

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.