这程序在VC6中编译通过,但VC7不能,何解?
#include <iostream>
#include <cstring>
using namespace std;
// 通用的模板定义
template <class T>
T max( T t1, T t2 ) {
return (t1 > t2 ? t1 : t2);
}
// const char* 显式特化:
// 覆盖了来自通用模板定义的实例
typedef const char *PCC;
template<> PCC max<PCC>( PCC s1, PCC s2 ) {
return ( strcmp( s1, s2 ) > 0 ? s1 : s2 );
}
// 函数模板 max() 的定义以及对 const char* 的特化
int main() {
// 调用实例: int max< int >( int, int );
int i = max( 10, 5 );
// 调用显式特化: const char* max< const char* >( const char*, const char* );
const char *p = max<PCC>( "z", "world" );
cout << "i: " << i << " p: " << p << endl;
return 0;
}
要在VC7运行的话,应该怎么做?