/* Copyright 2019 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #include #include template struct A { }; template void test(A) { T v1 = N; BOOST_TEST(boost::alignment::align_up(v1, N) == v1); T v2 = N - 1; BOOST_TEST(boost::alignment::align_up(v2, N) == v1); T v3 = N + N; BOOST_TEST(boost::alignment::align_up(v3, N) == v3); T v4 = N + 1; BOOST_TEST(boost::alignment::align_up(v4, N) == v3); } template void test(A<1>) { T v = 1; BOOST_TEST(boost::alignment::align_up(v, 1) == v); } template void test() { test(A<1>()); test(A<2>()); test(A<4>()); test(A<8>()); test(A<16>()); test(A<32>()); test(A<64>()); test(A<128>()); } int main() { test(); test(); test(); test(); test(); test(); #if !defined(BOOST_NO_LONG_LONG) test(); test(); #endif test(); test(); return boost::report_errors(); }