1
0
Fork 0
mirror of https://github.com/bolero-MURAKAMI/Sprout synced 2025-08-03 12:49:50 +00:00

support for VC++2015

This commit is contained in:
bolero-MURAKAMI 2015-12-09 19:54:35 +09:00
parent f2c09dd3af
commit b9440c0e9c
33 changed files with 353 additions and 253 deletions

View file

@ -13,6 +13,7 @@
#include <sprout/config.hpp>
#include <sprout/utility/forward.hpp>
#include <sprout/functional/base.hpp>
#include <sprout/type_traits/identity.hpp>
namespace sprout {
// 20.8.10 member function adaptors
@ -200,13 +201,13 @@ namespace sprout {
template<typename T>
static two check_const(T&, Class const*);
template<typename T>
static two check_const(T&, const volatile void*);
static two check_const(T&, void const volatile*);
public:
template<typename T>
struct result_type
: public sprout::detail::mem_fn_const_or_non<
Res,
(sizeof(two) == sizeof(check_const<T>(get_ref<T>(), (T*)0)))
(sizeof(two) == sizeof(check_const<T>(get_ref<T>(), sprout::identity<T*>::type())))
>
{};
template<typename Signature>

View file

@ -41,41 +41,49 @@ namespace sprout {
public:
typedef R result_type;
};
#if !defined(_MSC_VER)
template<typename R, typename... Args>
struct weak_result_type_impl<R (Args......)> {
public:
typedef R result_type;
};
#endif
template<typename R, typename... Args>
struct weak_result_type_impl<R (&)(Args...)> {
public:
typedef R result_type;
};
#if !defined(_MSC_VER)
template<typename R, typename... Args>
struct weak_result_type_impl<R (&)(Args......)> {
public:
typedef R result_type;
};
#endif
template<typename R, typename... Args>
struct weak_result_type_impl<R (*)(Args...)> {
public:
typedef R result_type;
};
#if !defined(_MSC_VER)
template<typename R, typename... Args>
struct weak_result_type_impl<R (*)(Args......)> {
public:
typedef R result_type;
};
#endif
template<typename R, typename Class, typename... Args>
struct weak_result_type_impl<R (Class::*)(Args...)> {
public:
typedef R result_type;
};
#if !defined(_MSC_VER)
template<typename R, typename Class, typename... Args>
struct weak_result_type_impl<R (Class::*)(Args......)> {
public:
typedef R result_type;
};
#endif
#if SPROUT_CLANG_OR_LATER(3, 6, 0)
# pragma clang diagnostic pop
#endif