tweaks regarding MSVC

This commit is contained in:
badair
2016-04-06 18:55:24 -05:00
parent 222c2a6791
commit 7c416b2ab1
4 changed files with 30 additions and 42 deletions

View File

@@ -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; }