mirror of
https://github.com/boostorg/ratio.git
synced 2025-05-11 05:24:01 +00:00
Test output: Sandia-intel-10.1-32 - ratio - mpl_plus_pass / intel-linux-10.1 Rev 67645 / Tue, 4 Jan 2011 03:00:36 +0000 Report Time: Tue, 4 Jan 2011 14:18:10 +0000 Compile [2011-01-04 04:29:53 UTC]: fail "/usr/local/intel/cc/10.1.015/bin/icpc" -c -xc++ -O0 -g -w2 -inline-level=0 -pthread -DBOOST_ALL_NO_LIB=1 -DBOOST_ENABLE_WARNINGS -DBOOST_MPL_NEXT_PRIOR_EXT -DBOOST_RATIO_USES_MPL_ASSERT -I".." -c -o "/scratch/boost/results/boost/bin.v2/libs/ratio/test/mpl_plus_pass.test/intel-linux-10.1/debug/link-static/threading-multi/mpl_plus_pass.o" "../libs/ratio/test/ratio_extensions/mpl_plus_pass.cpp" ../libs/ratio/test/ratio_extensions/mpl_plus_pass.cpp(23): remark #1418: external function definition with no prior declaration void test() ^ ... ../libs/ratio/test/ratio_extensions/mpl_plus_pass.cpp(88): remark #1418: external function definition with no prior declaration boost::intmax_t test_conversion() { ^ ../libs/ratio/test/ratio_extensions/mpl_plus_pass.cpp(89): internal error: assertion failed: copy_template_param_expr: bad expression kind (shared/edgcpfe/il.c, line 12561) return func( ^ compilation aborted for ../libs/ratio/test/ratio_extensions/mpl_plus_pass.cpp (code 4) [SVN r67651]
98 lines
2.9 KiB
C++
98 lines
2.9 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
// Source Licenses. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
// Adaptation to Boost of the libcxx
|
|
// Copyright 2010 Vicente J. Botet Escriba
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// See http://www.boost.org/LICENSE_1_0.txt
|
|
|
|
// test mpl::plus
|
|
|
|
#define BOOST_RATIO_EXTENSIONS
|
|
|
|
#include <boost/ratio/mpl/plus.hpp>
|
|
#if !defined(BOOST_NO_STATIC_ASSERT)
|
|
#define NOTHING ""
|
|
#endif
|
|
|
|
void test()
|
|
{
|
|
{
|
|
typedef boost::ratio<1, 1> R1;
|
|
typedef boost::mpl::int_<1> R2;
|
|
typedef boost::mpl::plus<R1, R2> R;
|
|
BOOST_RATIO_STATIC_ASSERT(R::num == 2 && R::den == 1, NOTHING, ());
|
|
typedef boost::mpl::plus<R, R2> RR;
|
|
BOOST_RATIO_STATIC_ASSERT(RR::num == 3 && RR::den == 1, NOTHING, ());
|
|
}
|
|
{
|
|
typedef boost::mpl::int_<1> R1;
|
|
typedef boost::ratio<1, 2> R2;
|
|
typedef boost::mpl::plus<R1, R2> R;
|
|
BOOST_RATIO_STATIC_ASSERT(R::num == 3 && R::den == 2, NOTHING, ());
|
|
}
|
|
{
|
|
typedef boost::ratio<-1, 2> R1;
|
|
typedef boost::ratio<1, 1> R2;
|
|
typedef boost::mpl::int_<0> R3;
|
|
typedef boost::mpl::plus<R1, R2, R3> R;
|
|
BOOST_RATIO_STATIC_ASSERT(R::num == 1 && R::den == 2, NOTHING, ());
|
|
}
|
|
{
|
|
typedef boost::ratio<1, -2> R1;
|
|
typedef boost::ratio<1, 1> R2;
|
|
typedef boost::mpl::int_<0> R3;
|
|
typedef boost::mpl::plus<R1, R2, R3> R;
|
|
BOOST_RATIO_STATIC_ASSERT(R::num == 1 && R::den == 2, NOTHING, ());
|
|
}
|
|
{
|
|
typedef boost::ratio<1, 2> R1;
|
|
typedef boost::ratio<-1, 1> R2;
|
|
typedef boost::mpl::int_<0> R3;
|
|
typedef boost::mpl::plus<R1, R2, R3> R;
|
|
BOOST_RATIO_STATIC_ASSERT(R::num == -1 && R::den == 2, NOTHING, ());
|
|
}
|
|
{
|
|
typedef boost::ratio<1, 2> R1;
|
|
typedef boost::ratio<1, -1> R2;
|
|
typedef boost::mpl::int_<0> R3;
|
|
typedef boost::mpl::plus<R1, R2, R3> R;
|
|
BOOST_RATIO_STATIC_ASSERT(R::num == -1 && R::den == 2, NOTHING, ());
|
|
}
|
|
{
|
|
typedef boost::ratio<56987354, 467584654> R1;
|
|
typedef boost::ratio<544668, 22145> R2;
|
|
typedef boost::mpl::int_<0> R3;
|
|
typedef boost::mpl::plus<R1, R2, R3> R;
|
|
BOOST_RATIO_STATIC_ASSERT(R::num == 127970191639601LL && R::den == 5177331081415LL, NOTHING, ());
|
|
}
|
|
//~ {
|
|
//~ typedef boost::ratio<BOOST_RATIO_INTMAX_C(0x7FFFFFFFFFFFFFFF), 1> R1;
|
|
//~ typedef boost::ratio<-1, 1> R2;
|
|
//~ typedef boost::mpl::int_<0> R3;
|
|
//~ typedef boost::mpl::plus<R1, R2, R3>::type RT;
|
|
//~ }
|
|
|
|
}
|
|
|
|
boost::intmax_t func(boost::ratio<5,6> s) {
|
|
return s.num;
|
|
}
|
|
|
|
|
|
boost::intmax_t test_conversion() {
|
|
return func(
|
|
boost::mpl::plus<
|
|
boost::ratio<1,2>,
|
|
boost::ratio<1,3>
|
|
>
|
|
()
|
|
);
|
|
}
|
|
|