Boost中Core模組的is_same用法
阿新 • • 發佈:2018-12-03
標頭檔案
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