最近、私はVC6コンパイラを指す問題に直面しています。
それらのいくつかは次のとおりです。
- function-try-blockは機能しません。関連するQ
- クラス内定数は機能しません。
- __FUNCTION_(関数名を取得するマクロ)が機能しない
- 最新の追加は、void関数をfor_eachの一部として渡すことを許可しないことです。
以下の例は、VC6コンパイラでコンパイルされていません。「エラーC2562:'()':'void'関数が値を返します」と表示されます。VC6は、void関数がfor_eachに渡されることを好まないようです。
class Temp
{
public:
Temp(int i):m_ii(i)
{}
int getI() const
{
return m_ii;
}
void printWithVoid()
{
cout<< "i = "<<m_ii<<endl;
}
bool printWithBool()
{
cout<< "i = "<<m_ii<<endl;
return true;
}
private:
int m_ii;
};
int main(void)
{
std::vector<Temp> arrTempObjects;
arrTempObjects.push_back(Temp(0));
arrTempObjects.push_back(Temp(2));
//Doesnot work, compiler error
std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithVoid));
//Works
std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithBool));
return 0;
}
VC6.0に関連する他の問題に直面しましたか。これらの問題を解決するための回避策はありますか?それとも、コンパイラを変更する時が来ましたか?