Typedef a template class without specifying the template parameters

前端 未结 2 487
名媛妹妹
名媛妹妹 2020-12-24 02:21

I\'m trying to typedef either an unordered_map or std::map depending whether there are TR1 libraries available. But I don\'t want to specify the template parameters. From wh

相关标签:
2条回答
  • 2020-12-24 02:44

    You have to use full types for typedefs.

    Use a #define macro instead.

    0 讨论(0)
  • 2020-12-24 02:57

    The way I've seen this done is to wrap the typedef in a template-struct:

    template<typename KeyType, typename MappedType>
    struct myMap
    {
    #ifdef _TR1
        typedef std::tr1::unordered_map<KeyType, MappedType> type;
    #else
        typedef std::map<KeyType, MappedType> type;
    #endif
    };
    

    Then in your code you invoke it like so:

    myMap<key, value>::type myMapInstance;
    

    It may be a little more verbose than what you want, but I believe it meets the need given the current state of C++.

    0 讨论(0)
提交回复
热议问题