HI Could anyone give a sample program to implement the is_same_type type trait in c++?
            Asked
            
        
        
            Active
            
        
            Viewed 1,228 times
        
    4
            
            
        - 
                    1Sure, if you provide a detailed specification of what such a program should do. We all sit around here waiting for requests just like this - give us the spec and we will be right on it! – Apr 14 '10 at 17:28
- 
                    1This isn't really a "write the program for me" as much as a "I heard about this thing and I have no idea how to do it, but I think I need it" request. Agreed; its not the best question in the world, but I don't think it really violates any guidelines, except not being very specific. – i_am_jorf Apr 14 '10 at 17:35
1 Answers
12
            #include <iostream>
template< typename T1, typename T2 >
struct is_same_type      { enum { result = false }; };
template< typename T>
struct is_same_type<T,T> { enum { result = true }; };
int main()
{
    std::cout << is_same_type<int,float>::result << '\n'
              << is_same_type<char,char>::result << '\n';
    return 0;
}
 
    
    
        sbi
        
- 219,715
- 46
- 258
- 445
- 
                    Why `enum {result = true}`, rather than `static const bool result = true`? Won't the `enum` give `result` the wrong type? – Brooks Moses Apr 14 '10 at 17:30
- 
                    So you are setting yourself up as a program writing service now? This really doesn't help the OP (or you) in the long run. – Apr 14 '10 at 17:31
- 
                    @Brooks: The only reason is that I did TMP when the `enum` trick was still hip and more portable anyway. I agree that nowadays it should be `static const bool result = ...`, but I keep forgetting this... – sbi Apr 14 '10 at 17:33
- 
                    I'm curious about the enum {} thing too. I've seen this in other code but have only been able to speculate about why its happening. – i_am_jorf Apr 14 '10 at 17:34
- 
                    4@Neil: Usually I'm among the first to jump on anyone who seems to post homework questions without a proper tag, but I seriously doubt anyone but me would give their students a TMP problem for homework. And, yes, absent of the homework problem, if people politely ask whether someone could show them something, and if that something is easy enough so that I happen to able to be make it up in <3mins, I don't usually hesitate to show them. That (and the fact that others are quick in pointing out my errors) is what I'm here for, after all. – sbi Apr 14 '10 at 17:37
- 
                    @sbi Well, I disagree. I too routinely provide provide compilable C++ code in my answers (in fact I always try to ensure the code is compilable - don't always succeed) but ONLY if the OP also put in some effort. But of course you must reply to posts as you see fit. – Apr 14 '10 at 17:45
- 
                    1Hi this by no means is an Home Work.. I am just very confused about Templates and Type Traits.. I tried looking up a lot of sites but have not found a single one which in simple correct term explain type traits or Templates.. I decided the next best way to learn is to read from code samples and try to figure out the pieces.. If any body experienced have a better way to understand Meta Programming and Type traits I will be glad and thankful.. – Eternal Learner Apr 14 '10 at 17:53
- 
                    1@Srinivasa: Get a copy of *"Modern C++ programming"*, it should get you started. – Georg Fritzsche Apr 14 '10 at 17:59
- 
                    You could try some books. If you are comfortable with templates in C++, Meta Template Programming by David Abrahams and Alexei Gurtovoy is a must read :) – Matthieu M. Apr 14 '10 at 18:01
- 
                    1I am a beginner to Template Programming in C++ and it looks and sounds so very different from all the c++ I had learned earlier. – Eternal Learner Apr 14 '10 at 18:04
- 
                    3@Srinivasa: Then maybe a more basic book would be better (like *"C++ Templates The Complete Guide"*) - note that there is a C++ book list on SO: http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – Georg Fritzsche Apr 14 '10 at 18:09
- 
                    2@Srinivasa: If you want to learn about traits, Nathan Myers' classic http://www.cantrip.org/traits.html might be the first publication on it. I second the recommendation of _C++ Templates The Complete Guide_. It's got all the basics you need to understand templates. You can take it from there. Both _Modern C++ Design_ and _C++ Template Metaprogramming_ are great books, but might be a bit tall for someone who doesn't know enough of the basics of templates. – sbi Apr 14 '10 at 20:05
