Ідіоми застосування шаблонів Traits-шаблони numeric_limits char_traits string Література


Ідіоми застосування шаблонів Traits-шаблони numeric_limits char_traits string Література Эккель Б., Эллисон Ч. Философия С++, т.2, гл 5.-"Питер",2004. Вандевурд Д., Джосатисс Н. Шаблоны С++: справочник разработчика.- М.:"Вильямс",2003.

Traits-шаблони Traits- (характерні) риси Traits-шаблон – ідіома інкапсуляції значень множини параметрів стану і методів характерної поведінки з наступним інстанціюванням для фіксованого аргументу шаблону Статичний поліморфізм включно з даними: для будь-якого значення параметра шаблону – однакове іменування параметрів стану і методів Спрощення інстанціювання шаблонних типів: параметри стану( може бути значна кількість), як правило, залежать від значення параметра шаблону( найчастіше – одного) Можливість використання ієрархій типів і значень за замовчуванням prj: Traits

_Num_base struct _CRTIMP2_PURE _Num_base{// Риси числових типів за замовчуванням _STCONS(float_denorm_style, has_denorm, denorm_absent); _STCONS(bool, has_denorm_loss, false); _STCONS(bool, has_infinity, false); _STCONS(bool, has_quiet_NaN, false); _STCONS(bool, has_signaling_NaN, false); _STCONS(bool, is_bounded, false); _STCONS(bool, is_exact, false); _STCONS(bool, is_iec559, false); _STCONS(bool, is_integer, false);//static const bool is_integer= false; _STCONS(bool, is_modulo, false); _STCONS(bool, is_signed, false); _STCONS(bool, is_specialized, false); _STCONS(bool, tinyness_before, false); _STCONS(bool, traps, false); _STCONS(float_round_style, round_style, round_toward_zero); _STCONS(int, digits, 0); _STCONS(int, digits10, 0); _STCONS(int, max_exponent, 0); _STCONS(int, max_exponent10, 0); _STCONS(int, min_exponent, 0); _STCONS(int, min_exponent10, 0); _STCONS(int, radix, 0); };

_Num_int_base struct _CRTIMP2_PURE _Num_int_base : public _Num_base { // Додаткові риси для integer _STCONS(bool, is_bounded, true); _STCONS(bool, is_exact, true); _STCONS(bool, is_integer, true); _STCONS(bool, is_modulo, true); _STCONS(bool, is_specialized, true); _STCONS(int, radix, 2); };

numeric_limits template

numeric_limits
Повернення боргів cout<<"numeric_limits

struct char_traits template

struct char_traits

string template < class CharType, class Traits=char_traits

Базові класи потоків

ios_base class ios_base: public _Iosb

ios_base (cont) class ios_base: public _Iosb

class basic_ios template

class basic_ios (cont) public: . . . . . . void clear(io_state _State); void setstate(io_state _State); _Myos tie() const; _Myos tie(_Myos *_Newtie); _Mysb * rdbuf() const; _Mysb * rdbuf(_Mysb *_Strbuf); _Elem fill() const; _Elem fill(_Elem _Newfill); private: _Mysb *_Mystrbuf; // pointer to stream buffer _Myos *_Tiestr; // pointer to tied output stream _Elem _Fillch; // the fill character };

Визначення базових потоків template

templates_application.ppt
- Количество слайдов: 16