Какие методы входят в минимально-необходимый состав, который должен быть имплементирован при использовании поведенческого шаблона итератор?
Какие преимущества обеспечивает модель проталкивания данных от субъекта наблюдателю перед моделью вытягивания данных при реализации шаблона наблюдатель?
Каковы особенности шаблона «делегирование»?
Каковы особенности базового шаблона «неизменяемый объект»?
Каковы особенности базового шаблона «интерфейсный класс»?
<pre> //====================== start of sample.cpp ========================== template <class Receiver> class MyCommand: public Command { public: typedef void (Receiver::* Action)(); MyCommand(Receiver r, Action a): _receiver(r), _action(a){} void Execute(); int GetStatus(); private: Action _action; Receiver* _receiver; int _last_error; }; //====================== end of sample.cpp ========================== </pre> Какие атрибуты и методы класса MyCommand являются необходимыми для имплементации шаблона команда в файле sample.cpp?
<pre> //====================== start of sample.cpp ========================== #include <string> #include <type_traits> struct my_string { std::string s; my_string(const std::string& s); }; int main(int argc, char* argv[]) { is_copy_constructible<my_string>; return 0; } //====================== end of sample.cpp ========================== </pre> Каким образом можно проверить требование CopyConstructable посредством шаблона стандартной библиотеки is_copy_constructible для типа my_string из файла sample.cpp?
<pre> //====================== start of sample.cpp ========================== template<unsigned long N> class binary { public: static unsigned long const value = binary<N / 10>::value << 1 | N % 10; }; template<> class binary<0> { public: static unsigned long const value = 0; }; int main(int argc, char* argv[]) { static unsigned const xyz = binary<111>::value; return 0; } //====================== end of sample.cpp ========================== </pre> Конкретизация шаблона с значением 111 приводит:
<pre> //====================== start of sample.cpp ========================== template<unsigned long N> class binary { public: static unsigned long const value = binary<N / 10>::value << 1 | N % 10; }; template<> class binary<0> { public: static unsigned long const value = 0; }; template<> class binary<1> { public: static unsigned long const value = 1; }; int main(int argc, char* argv[]) { static unsigned const x0 = binary<0>::value; static unsigned const x1 = binary<1000>::value; static unsigned const x2 = binary<1001>::value; static unsigned const x3 = binary<1010>::value; static unsigned const x4 = binary<1011>::value; return 0; } //====================== end of sample.cpp ========================== </pre> При инициализации какой переменной не будет использоваться конкретизация шаблона с параметром 0?
Какие контейнеры STL являются последовательными?