2
0
mirror of https://github.com/boostorg/lambda.git synced 2026-01-21 17:02:36 +00:00

Compare commits

...

6 Commits

Author SHA1 Message Date
Peter Dimov
ac26514243 Include boost/config.hpp in construct.hpp 2021-12-28 01:06:03 +02:00
Peter Dimov
6b124b66f7 Merge pull request #25 from RaisinTen/use-forward-in-construct.hpp
Use variadic templates to get rid of manual overloads in construct.hpp
2021-12-28 01:02:21 +02:00
Darshan Sen
568a4d2a63 Use variadic templates to get rid of manual overloads in construct.hpp
There is no need to write the overloads manually and limiting our users
to a max of 10 arguments when we can forward universal references to the
constructors.

Signed-off-by: Darshan Sen <darshan.sen@postman.com>
2021-12-27 12:01:24 +05:30
Peter Dimov
40b6f20419 Merge branch 'feature/issue-24' into develop 2021-12-27 00:14:01 +02:00
Peter Dimov
cedabad897 Merge pull request #22 from eldiener/develop
[skip ci] Add "cxxstd" json field
2021-12-26 19:08:13 +02:00
Edward Diener
b90488068a [skip ci] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries in order to specify the minumum C++ standard compilation level. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out. 2021-01-20 13:08:07 -05:00
2 changed files with 21 additions and 1 deletions

View File

@@ -16,6 +16,11 @@
#include "boost/type_traits/remove_cv.hpp"
#include "boost/type_traits/is_pointer.hpp"
#include "boost/config.hpp"
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#include <utility>
#endif
namespace boost {
namespace lambda {
@@ -28,6 +33,12 @@ template<class T> struct constructor {
template <class U> struct sig { typedef T type; };
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <class... Args>
T operator()(Args&&... args) const {
return T(std::forward<Args>(args)...);
}
#else
T operator()() const {
return T();
}
@@ -81,6 +92,7 @@ template<class T> struct constructor {
T operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10) const {
return T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
}
#endif
};
@@ -137,6 +149,12 @@ template<class T> struct new_ptr {
template <class U> struct sig { typedef T* type; };
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <class... Args>
T* operator()(Args&&... args) const {
return new T(std::forward<Args>(args)...);
}
#else
T* operator()() const {
return new T();
}
@@ -190,6 +208,7 @@ template<class T> struct new_ptr {
T* operator()(A1& a1, A2& a2, A3& a3, A4& a4, A5& a5, A6& a6, A7& a7, A8& a8, A9& a9, A10& a10) const {
return new T(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
}
#endif
};

View File

@@ -11,5 +11,6 @@
],
"maintainers": [
"Jaakko Jarvi <jarvi -at- cs.tamu.edu>"
]
],
"cxxstd": "03"
}