Intel C++ 9.0 (Linux)

type_assert

[johan@mintoshiba redhat9-intel]$ make c=icc
linux intel32 debug icc
../recurse.hpp(27): error: class "tests::too_deep_in_function<5>" has no member "assert"
  template<typename if_, int assert_ = if_::assert> struct
                                            ^
          detected during:
            processing of template argument list for "tests::type_assert" based on template argument <tests::too_deep_in_function<5>> at line 80
            instantiation of "int tests::recurse<void>::function(const tests::depth<depth_> &) [with depth_=5]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<void>, depth_=4]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<void>>, depth_=3]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<tests::recurse<void>>>, depth_=2]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<tests::recurse<tests::recurse<void>>>>, depth_=1]" at line 70
            instantiation of "tests::recurse<next_>::operator int() const [with next_=tests::recurse<tests::recurse<tests::recurse<tests::recurse<void>>>>]"
 
compilation aborted for ../main.cpp (code 2)
make: *** [debug] Error 2

BOOST_MPL_ASSERT


[johan@mintoshiba redhat9-intel]$ make c=icc
linux intel32 debug icc
../recurse.hpp(79): error: no instance of function template "boost::mpl::assertion_failed" matches the argument list
            argument types are: (boost::mpl::failed ************tests::too_deep_in_function<5>::************)
                BOOST_MPL_ASSERT((    too_deep_in_function<depth_>        ));
                ^
          detected during:
            instantiation of "int tests::recurse<void>::function(const tests::depth<depth_> &) [with depth_=5]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<void>, depth_=4]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<void>>, depth_=3]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<tests::recurse<void>>>, depth_=2]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<tests::recurse<tests::recurse<void>>>>, depth_=1]" at line 70
            instantiation of "tests::recurse<next_>::operator int() const [with next_=tests::recurse<tests::recurse<tests::recurse<tests::recurse<void>>>>]"
 
compilation aborted for ../main.cpp (code 2)
make: *** [debug] Error 2

BOOST_STATIC_ASSERT


[johan@mintoshiba redhat9-intel]$ make c=icc
linux intel32 debug icc
../recurse.hpp(78): error: incomplete type is not allowed
                BOOST_STATIC_ASSERT(( too_deep_in_function<depth_>::value ));
                ^
          detected during:
            instantiation of "int tests::recurse<void>::function(const tests::depth<depth_> &) [with depth_=5]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<void>, depth_=4]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<void>>, depth_=3]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<tests::recurse<void>>>, depth_=2]" at line 67
            instantiation of "int tests::recurse<next_>::function(const tests::depth<depth_> &) [with next_=tests::recurse<tests::recurse<tests::recurse<tests::recurse<void>>>>, depth_=1]" at line 70
            instantiation of "tests::recurse<next_>::operator int() const [with next_=tests::recurse<tests::recurse<tests::recurse<tests::recurse<void>>>>]"
 
compilation aborted for ../main.cpp (code 2)
make: *** [debug] Error 2