decay_test.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 118 行

CPP
118
字号
//  (C) Copyright John Maddock & Thorsten Ottosen 2005. //  Use, modification and distribution are subject to the //  Boost Software License, Version 1.0. (See accompanying file //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#include "test.hpp"#include "check_integral_constant.hpp"#ifdef TEST_STD#  include <type_traits>#else#  include <boost/type_traits/decay.hpp>#  include <boost/type_traits/is_same.hpp>#endif#include <iostream>#include <string>#include <utility>namespace boost{    int proc1()    {       return 0;    }    int proc2(int c)    {       return c;    }        //    // An almost optimal version of std::make_pair()    //    template< class F, class S >    inline std::pair< BOOST_DEDUCED_TYPENAME tt::decay<const F>::type,                       BOOST_DEDUCED_TYPENAME tt::decay<const S>::type >    make_pair( const F& f, const S& s )    {        return std::pair< BOOST_DEDUCED_TYPENAME tt::decay<const F>::type,                           BOOST_DEDUCED_TYPENAME tt::decay<const S>::type >( f, s );     }    /*    This overload will mess up vc7.1    template< class F, class S >    inline std::pair< BOOST_DEDUCED_TYPENAME ::tt::decay<F>::type,                       BOOST_DEDUCED_TYPENAME ::tt::decay<S>::type >    make_pair( F& f, S& s )    {        return std::pair< BOOST_DEDUCED_TYPENAME ::tt::decay<F>::type,                           BOOST_DEDUCED_TYPENAME ::tt::decay<S>::type >( f, s );     }    */}TT_TEST_BEGIN(is_class)   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<int>::type,int>::value),                                  true );   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<char[2]>::type,char*>::value),                                 true );   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<const char[2]>::type,const char*>::value),                                  true );   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<wchar_t[2]>::type,wchar_t*>::value),                                  true );   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<const wchar_t[2]>::type,const wchar_t*>::value),                                  true );   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<const wchar_t[2]>::type,const wchar_t*>::value),                                  true );   typedef int f1_type(void);   typedef int f2_type(int);   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<f1_type>::type,int (*)(void)>::value),                                  true );   BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same<           ::tt::decay<f2_type>::type,int (*)(int)>::value),                                  true );   std::pair<std::string,std::string> p  = boost::make_pair( "foo", "bar" );   std::pair<std::string, int>        p2 = boost::make_pair( "foo", 1 );#ifndef BOOST_NO_STD_WSTRING   std::pair<std::wstring,std::string> p3  = boost::make_pair( L"foo", "bar" );   std::pair<std::wstring, int>        p4  = boost::make_pair( L"foo", 1 );#endif   //   // Todo: make these work sometime. The test id not directly   //       related to decay<T>::type and can be avioded for now.   //    /*   int array[10];   std::pair<int*,int*> p5 = boost::make_pair( array, array );#ifndef __BORLANDC__   std::pair<int(*)(void), int(*)(int)> p6 = boost::make_pair(boost::proc1, boost::proc2);   p6.first();   p6.second(1);#endif   */   TT_TEST_END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?