关于STL traits的有关问题
关于STL traits的问题!
有如下程序,主要是为了测试iterator_traits的偏特化性质,但有一些问题:
#include <cstdlib>
#include <iostream>
using namespace std;
/*
template <class T>
class MyClass
{
public:
typedef T value_type;
MyClass(){};
~MyClass(){};
int m_data;
};
*/
template <class T>
struct iterator_traitss
{
typedef typename T::value_type value_type;
};
template <class T>
struct iterator_traitss <T*>
{
typedef T value_type;
};
template <class T>
typename iterator_traitss <T> ::value_type
func(T ite)
{
typename iterator_traitss <T> ::value_type i;
return i;
}
int main(int argc, char *argv[])
{
int *p = new int(9);
func(p); //没问题,因为有template <class T> struct iterator_traitss <T*>
func(*p); //有问题,无法执行!!!!!! 帮忙看看!!!
system( "PAUSE ");
return EXIT_SUCCESS;
}
------解决方案--------------------
应该是重载func,提供func(int)版本。
------解决方案--------------------
嗯,那样更好。:P
一切麻烦烟消云散,嘿嘿。
有如下程序,主要是为了测试iterator_traits的偏特化性质,但有一些问题:
#include <cstdlib>
#include <iostream>
using namespace std;
/*
template <class T>
class MyClass
{
public:
typedef T value_type;
MyClass(){};
~MyClass(){};
int m_data;
};
*/
template <class T>
struct iterator_traitss
{
typedef typename T::value_type value_type;
};
template <class T>
struct iterator_traitss <T*>
{
typedef T value_type;
};
template <class T>
typename iterator_traitss <T> ::value_type
func(T ite)
{
typename iterator_traitss <T> ::value_type i;
return i;
}
int main(int argc, char *argv[])
{
int *p = new int(9);
func(p); //没问题,因为有template <class T> struct iterator_traitss <T*>
func(*p); //有问题,无法执行!!!!!! 帮忙看看!!!
system( "PAUSE ");
return EXIT_SUCCESS;
}
------解决方案--------------------
应该是重载func,提供func(int)版本。
------解决方案--------------------
嗯,那样更好。:P
一切麻烦烟消云散,嘿嘿。