/*
<gintenlib/is_same_class.hpp>
- is_same_class ¡§ const, volatile ¤ò½ü¤¤¤¿¾õÂ֤Ǥη¿¤ÎÈæ³Ó
+ is_same_class : const, volatile を除いた状態での型の比較
- Àë¸À¡§
+ 宣言:
template< typename T1, typename T2 >
class is_same_class
{
class enable_if_same_class
: enable_if< is_same_class<T1, T2>, T > {};
- µ¡Ç½¡§
- ²¼¤ÎÄêµÁ¤ò¸«¤ì¤Ð°ìÌÜÎÆÁ³¡£remove_cv ¤·¤Æ is_same Èæ³Ó¤·¤Þ¤¹¡£
- Èæ³ÓŪ¿¤¤Áàºî¤Ê¤Î¤Ç¡¢Ã»¤¯»È¤¨¤ë¤è¤¦¤Ë¡£
+ 機能:
+ 下の定義を見れば一目瞭然。remove_cv して is_same 比較します。
+ 比較的多い操作なので、短く使えるように。
*/
namespace gintenlib
{
- // CV ½¤¾þ¤ò½ü¤¤¤ÆƱ¤¸¥¯¥é¥¹¤«Èݤ«
+ // CV 修飾を除いて同じクラスか否か
template<typename T1, typename T2>
struct is_same_class
: boost::is_same< typename boost::remove_cv<T1>::type,
typename boost::remove_cv<T2>::type > {};
- // CV ½¤¾þ¤ò½ü¤¤¤ÆƱ¤¸¤Ê¤é͸ú¤Ë¤Ê¤ë
+ // CV 修飾を除いて同じなら有効になる
template<typename T1, typename T2, typename T = void>
struct enable_if_same_class
: enable_if< is_same_class<T1, T2>, T > {};