]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/typeof/test/function_ptr.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / typeof / test / function_ptr.cpp
1 // Copyright (C) 2006 Arkadiy Vertleyb
2 // Use, modification and distribution is subject to the Boost Software
3 // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
4
5 #include "test.hpp"
6
7 BOOST_STATIC_ASSERT(boost::type_of::test<double(*)()>::value);
8 BOOST_STATIC_ASSERT(boost::type_of::test<double(*)(int, double, short, char*, bool, char, float, long, unsigned short)>::value);
9 BOOST_STATIC_ASSERT(boost::type_of::test<void(*)()>::value);
10 BOOST_STATIC_ASSERT(boost::type_of::test<void(*)(int, double, short, char*, bool, char, float, long, unsigned short)>::value);
11 BOOST_STATIC_ASSERT(boost::type_of::test<void(*)(...)>::value);
12 BOOST_STATIC_ASSERT(boost::type_of::test<void(*)(int, double, short, char*, bool, char, float, long, unsigned short, ...)>::value);
13
14 // check that const gets stripped from function pointer
15
16 int foo1(double);
17 int foo2(...);
18 typedef int(*PTR1)(double);
19 typedef int(*PTR2)(...);
20 typedef const PTR1 CPTR1;
21 typedef const PTR2 CPTR2;
22 CPTR1 cptr1 = foo1;
23 CPTR2 cptr2 = foo2;
24
25 BOOST_STATIC_ASSERT((boost::is_same<BOOST_TYPEOF(cptr1), PTR1>::value));
26 BOOST_STATIC_ASSERT((boost::is_same<BOOST_TYPEOF(cptr2), PTR2>::value));