Написал манипулятор для VC STL:
inline void setpf(std::ios_base& iostr, int precision) {
iostr.precision(precision); iostr.setf(std::ios_base::fixed); }
inline std::_Smanip<int> setp(int precision) {
return std::_Smanip<int>(&setpf, precision); }
Необходимо, чтобы этот манипулятор работал и из под STLport.
Проблема в том, что в STLport нет _Smanip, там есть _Ios_Manip_1, однако простая замена не помогает. Компилятор (CL ver. 12.00.8804) выдает следующую ошибку:
error C2665: '_Ios_Manip_1<int>::_Ios_Manip_1<int>' : none of the 2 overloads can convert parameter 1 from type 'void (__cdecl *)(class _STL::ios_base &,int)'
Можно сделать по аналогии:
inline std::_Ios_Manip_1<int> setp(int precision) {
return std::_Ios_Manip_1<int>(std::ios_base::precision, precision);
}
Но мне еще необходимо при этом установить флаг fixed. Как это сделать? Помогите разобраться.
Знающие не говорят, говорящие не знают. Лао Цзы