2
此代碼與Visual C++ 11 Developer Preview編譯良好,但不會使用gcc 4.6.1進行編譯。升級或不升級 - 這是questiion
如何使後者「可編譯」?
#ifndef PROMOTE_H_INCLUDED
#define PROMOTE_H_INCLUDED
#include <boost\mpl\vector.hpp>
#include <boost\mpl\find.hpp>
#include <boost\mpl\next.hpp>
#include <boost\mpl\deref.hpp>
namespace mpl = boost::mpl;
template<class Integral>
struct Promote
{
typedef mpl::vector<char,short,int,long,long long> types;
typedef typename mpl::find<types,Integral>::type this_type;
typedef typename mpl::next<this_type>::type next_type;
typedef typename mpl::deref<next_type>::type type;
};
#endif // PROMOTE_H_INCLUDED
,然後在主:
cout << typeid(Promote<int>::type).name() ;
很好的發現,我永遠不會記得哪個斜槓是'正確的'。現在確實有效。謝謝。 – smallB
你會經常在Windows上使用'/',但在基於Unix的系統上,你基本上從不會使用任何工具來使用\。 (順便說一句,包含指令是如何處理的,我相信是實現定義的,所以都不是安全的。) – Mat