STLport & _Smanip
От: ssi Россия  
Дата: 02.01.03 20:59
Оценка:
Написал манипулятор для 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. Как это сделать? Помогите разобраться.
Знающие не говорят, говорящие не знают. Лао Цзы
Re: STLport & _Smanip
От: Павел Кузнецов  
Дата: 03.01.03 15:24
Оценка:
Здравствуйте, ssi, Вы писали:

ssi>
ssi> <...>
ssi>std::_Smanip<int> setp(int precision)


ssi>Необходимо, чтобы этот манипулятор работал и из под STLport.


Не используй std::_Smanip, напиши аналогичный класс сам — делов на пять минут.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.