1. 程式人生 > >Boost中Core模組的is_same用法

Boost中Core模組的is_same用法

標頭檔案

boost/core/is_same.hpp

作用

is_same是一個模板類,內部有一個 static const bool value,接收兩個引數,都是資料型別,包括 自定義的型別,如果兩個型別一致,則 value=true,否則 value=false

舉例

#include <boost/core/is_same.hpp>
#include <boost/core/lightweight_test_trait.hpp>

struct X
{
};

struct Y
{
};

int main()
{
    BOOST_TEST_TRAIT_TRUE(( boost::core::is_same<X, X> ));
    BOOST_TEST_TRAIT_TRUE(( boost::core::is_same<Y, Y> ));
    BOOST_TEST_TRAIT_TRUE(( boost::core::is_same<void, void> ));
    BOOST_TEST_TRAIT_TRUE(( boost::core::is_same<int, int> ));
    BOOST_TEST_TRAIT_TRUE(( boost::core::is_same<void const volatile, void const volatile> ));

    BOOST_TEST_TRAIT_FALSE(( boost::core::is_same<X, Y> ));
    BOOST_TEST_TRAIT_FALSE(( boost::core::is_same<X, X const> ));
    BOOST_TEST_TRAIT_FALSE(( boost::core::is_same<X, void> ));
    BOOST_TEST_TRAIT_FALSE(( boost::core::is_same<X, int> ));
    BOOST_TEST_TRAIT_FALSE(( boost::core::is_same<int, void> ));
    BOOST_TEST_TRAIT_FALSE(( boost::core::is_same<void, void const volatile> ));

    return boost::report_errors();
}

原始碼

namespace boost
{

namespace core
{

template< class T1, class T2 > struct is_same
{
    BOOST_STATIC_CONSTANT( bool, value = false );
};

template< class T > struct is_same< T, T >
{
    BOOST_STATIC_CONSTANT( bool, value = true );
};

} // namespace core

} // namespace boost