Написал манипулятор для 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. Как это сделать? Помогите разобраться.
Знающие не говорят, говорящие не знают. Лао Цзы
Здравствуйте, ssi, Вы писали:
ssi>ssi> <...>
ssi>std::_Smanip<int> setp(int precision)
ssi>Необходимо, чтобы этот манипулятор работал и из под STLport.
Не используй std::_Smanip, напиши аналогичный класс сам — делов на пять минут.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен