• c++ template 判断是否为类类型


    /* The following code example is taken from the book
    * "C++ Templates - The Complete Guide"
    * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002
    *
    * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.
    * Permission to copy, use, modify, sell and distribute this software
    * is granted provided this copyright notice appears in all copies.
    * This software is provided "as is" without express or implied
    * warranty, and with no claim as to its suitability for any purpose.
    */
    #include <iostream>
    
    template<typename T>
    class IsClassT {
    private:
    	typedef char One;
    	typedef struct { char a[2]; } Two;
    	template<typename C> static One test(int C::*);
    	template<typename C> static Two test(...);
    public:
    	enum { Yes = sizeof(test<T>(0)) == 1 };
    	enum { No = !Yes };
    };
    
    
    class MyClass {
    };
    
    struct MyStruct {
    };
    
    union MyUnion {
    };
    
    void myfunc()
    {
    }
    
    enum E { e1 } e;
    
    // check by passing type as template argument
    template <typename T>
    void check()
    {
    	if (IsClassT<T>::Yes) {
    		std::cout << " IsClassT " << std::endl;
    	}
    	else {
    		std::cout << " !IsClassT " << std::endl;
    	}
    }
    
    // check by passing type as function call argument
    template <typename T>
    void checkT(T)
    {
    	check<T>();
    }
    
    int main()
    {
    	std::cout << "int:     ";
    	check<int>();
    
    	std::cout << "MyClass: ";
    	check<MyClass>();
    
    	std::cout << "MyStruct:";
    	MyStruct s;
    	checkT(s);
    
    	std::cout << "MyUnion: ";
    	check<MyUnion>();
    
    	std::cout << "enum:    ";
    	checkT(e);
    
    	std::cout << "myfunc():";
    	checkT(myfunc);
    }

    http://blog.csdn.net/zhoudaxia/article/category/553198

  • 相关阅读:
    java,控制台输入输出,switch等值比较
    关于utf-8(网上查阅)
    Java,基础语法(网上查阅)
    Java,背景,组成
    《DSP using MATLAB》Problem5.16
    《DSP using MATLAB》Problem 5.15
    《DSP using MATLAB》Problem 5.14
    《DSP using MATLAB》Problem 5.13
    《DSP using MATLAB》Problem 5.12
    《DSP using MATLAB》Problem 5.11
  • 原文地址:https://www.cnblogs.com/itdef/p/5596349.html
Copyright © 2020-2023  润新知