mirror of
https://github.com/boostorg/callable_traits.git
synced 2026-02-18 14:02:11 +00:00
tweaks regarding MSVC
This commit is contained in:
@@ -12,12 +12,6 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#define CT_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
|
||||
#endif //CT_ASSERT
|
||||
|
||||
#ifdef CALLABLE_TRAITS_CONSTEXPR_CHECKS_DISABLED
|
||||
#define IF_ENABLED !
|
||||
#else
|
||||
#define IF_ENABLED
|
||||
#endif
|
||||
|
||||
namespace ct = callable_traits;
|
||||
|
||||
namespace test1 {
|
||||
@@ -82,20 +76,20 @@ namespace test2 {
|
||||
constexpr int operator()(int, int, int, int, int, int, int, int, int, int) const & { return 1; }
|
||||
};
|
||||
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(B1{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<B1>());
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(B2{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<B2>());
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(B3{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<B3>());
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(B4{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<B4>());
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(B5{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<B5>());
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(B6{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<B6>());
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(B7{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<B7>());
|
||||
CT_ASSERT(ct::is_constexpr(B1{}));
|
||||
CT_ASSERT(ct::is_constexpr<B1>());
|
||||
CT_ASSERT(ct::is_constexpr(B2{}));
|
||||
CT_ASSERT(ct::is_constexpr<B2>());
|
||||
CT_ASSERT(ct::is_constexpr(B3{}));
|
||||
CT_ASSERT(ct::is_constexpr<B3>());
|
||||
CT_ASSERT(ct::is_constexpr(B4{}));
|
||||
CT_ASSERT(ct::is_constexpr<B4>());
|
||||
CT_ASSERT(ct::is_constexpr(B5{}));
|
||||
CT_ASSERT(ct::is_constexpr<B5>());
|
||||
CT_ASSERT(ct::is_constexpr(B6{}));
|
||||
CT_ASSERT(ct::is_constexpr<B6>());
|
||||
CT_ASSERT(ct::is_constexpr(B7{}));
|
||||
CT_ASSERT(ct::is_constexpr<B7>());
|
||||
}
|
||||
|
||||
namespace test3 {
|
||||
@@ -105,16 +99,16 @@ namespace test3 {
|
||||
};
|
||||
|
||||
using C = std::integral_constant<decltype(&foo::bar), &foo::bar>;
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(C{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<C>());
|
||||
CT_ASSERT(ct::is_constexpr(C{}));
|
||||
CT_ASSERT(ct::is_constexpr<C>());
|
||||
}
|
||||
|
||||
namespace test4 {
|
||||
|
||||
constexpr int foo(const int&) { return 1; }
|
||||
using D = std::integral_constant<decltype(&foo), &foo>;
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(D{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<D>());
|
||||
CT_ASSERT(ct::is_constexpr(D{}));
|
||||
CT_ASSERT(ct::is_constexpr<D>());
|
||||
}
|
||||
|
||||
namespace test5 {
|
||||
@@ -161,8 +155,8 @@ namespace test7 {
|
||||
CT_ASSERT(!ct::is_constexpr(G1{}));
|
||||
CT_ASSERT(!ct::is_constexpr<G1>());
|
||||
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr(G2{}));
|
||||
CT_ASSERT(IF_ENABLED ct::is_constexpr<G2>());
|
||||
CT_ASSERT(ct::is_constexpr(G2{}));
|
||||
CT_ASSERT(ct::is_constexpr<G2>());
|
||||
|
||||
// we can't resolve the overload in G3, due to the way
|
||||
// callable_traits::detail::any_arg_evaluated works
|
||||
@@ -170,4 +164,4 @@ namespace test7 {
|
||||
CT_ASSERT(!ct::is_constexpr<G3>());
|
||||
}
|
||||
|
||||
int main() { return 0; }
|
||||
int main() { return 0; }
|
||||
|
||||
Reference in New Issue
Block a user