2
0
mirror of https://github.com/boostorg/hana.git synced 2026-02-14 00:42:22 +00:00
Files
hana/test/functional/placeholder.cpp
2014-06-03 11:46:24 -04:00

56 lines
1.7 KiB
C++

/*
@copyright Louis Dionne 2014
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
*/
#include <boost/hana/functional.hpp>
#include <boost/hana/detail/static_assert.hpp>
using namespace boost::hana;
#define BOOST_HANA_TEST_BINARY_OP(op, x, y) \
BOOST_HANA_STATIC_ASSERT((_ op _)(x, y) == (x op y)); \
BOOST_HANA_STATIC_ASSERT((_ op y)(x) == (x op y)); \
BOOST_HANA_STATIC_ASSERT((x op _)(y) == (x op y)); \
/**/
#define BOOST_HANA_TEST_UNARY_OP(op, x) \
BOOST_HANA_STATIC_ASSERT((op _)(x) == (op x)); \
/**/
int main() {
// Arithmetic
BOOST_HANA_TEST_UNARY_OP(+, 1)
BOOST_HANA_TEST_UNARY_OP(-, 1)
BOOST_HANA_TEST_BINARY_OP(+, 6, 3)
BOOST_HANA_TEST_BINARY_OP(-, 6, 3)
BOOST_HANA_TEST_BINARY_OP(*, 6, 3)
BOOST_HANA_TEST_BINARY_OP(/, 6, 3)
BOOST_HANA_TEST_BINARY_OP(%, 6, 3)
BOOST_HANA_TEST_UNARY_OP(~, 5)
BOOST_HANA_TEST_BINARY_OP(&, 6, 3)
BOOST_HANA_TEST_BINARY_OP(|, 6, 3)
BOOST_HANA_TEST_BINARY_OP(^, 6, 3)
BOOST_HANA_TEST_BINARY_OP(<<, 6, 3)
BOOST_HANA_TEST_BINARY_OP(>>, 6, 3)
// Comparison
BOOST_HANA_TEST_BINARY_OP(==, 6, 3)
BOOST_HANA_TEST_BINARY_OP(!=, 6, 3)
BOOST_HANA_TEST_BINARY_OP(<, 6, 3)
BOOST_HANA_TEST_BINARY_OP(<=, 6, 3)
BOOST_HANA_TEST_BINARY_OP(>, 6, 3)
BOOST_HANA_TEST_BINARY_OP(>=, 6, 3)
// Logical
BOOST_HANA_TEST_BINARY_OP(||, true, false)
BOOST_HANA_TEST_BINARY_OP(&&, true, true)
BOOST_HANA_TEST_UNARY_OP(!, true)
// Member access
constexpr int i = 4;
BOOST_HANA_TEST_UNARY_OP(*, &i)
}