База ответов ИНТУИТ

Программирование на С/С++

<<- Назад к вопросам

<pre> //====================== start of sample.cpp ========================== #include &lt;type_traits &gt; class A { public: A(int in = 5); }; int main() { std::is_pointer&lt;A&gt; is_ptr; return 0; } //====================== end of sample.cpp ========================== </pre> Как может использоваться объявление переменной is_ptr?

(Ответ считается верным, если отмечены все правильные варианты ответов.)

Варианты ответа
можно обратится к статическому атрибуту is_ptr.value и сравнить его с true(Верный ответ)
можно проверить тип is_ptr: он может быть true_type или false_type(Верный ответ)
если А не указатель, то при выполнении программы в месте создания is_ptr возникнет прерывание
если А не указатель, то код не соберётся
Похожие вопросы
<pre> //====================== start of sample.cpp ========================== #include &lt;type_traits&gt; class A { public: A(int in = 5); }; int main() { std::true_type my_true; std::false_type my_false; return 0; } //====================== end of sample.cpp ========================== </pre> Какие утверждения о переменных my_true и my_false верны?
<pre> //====================== start of sample.cpp ========================== #include &lt;string&gt; #include &lt;type_traits&gt; struct my_string { std::string s; my_string(const std::string&amp; s); }; int main(int argc, char* argv[]) { is_copy_constructible&lt;my_string&gt;; return 0; } //====================== end of sample.cpp ========================== </pre> Каким образом можно проверить требование CopyConstructable посредством шаблона стандартной библиотеки is_copy_constructible для типа my_string из файла sample.cpp?
<pre> //====================== start of sample.cpp ========================== #include &lt;climits&gt; #include &lt;limits&gt; #include &lt;boost/static_assert.hpp&gt; namespace name { BOOST_STATIC_ASSERT(std::numeric_limits&lt;int&gt;::digits == 32); } int main(int argc, char* argv[]) { return 0; } //====================== end of sample.cpp ========================== </pre> Что случится c программой из файла sample.cpp если в системе размер int больше 32 разрядов?
<pre> //====================== start of sample.cpp ========================== class ARef { public: ARef(A &amp;a, int i) : _a(a), _ix(i) {} ARef&amp; operator= (T t) { return *this;} operator T() {return _t;} operator A() {return _a;} A&amp; getA() { return _a;} bool operator == (A&amp; a) {return _a == a;} private: A&amp; _a; int _ix; T _t; }; class A { friend class ARef; public: A() {} ARef operator[] (int ix) {return ARef(*this, ix);} operator ARef() {return ARef(*this, ix);} }; int main() { A a; int i, j; T t; t = a[j]; return 0; } //====================== end of sample.cpp ========================== </pre> Какие из методов классов ARef и A из файла sample.cpp оказываются задействованы при операции t=a[j]?
<pre>//====================== start of sample.cpp ========================== #include &lt;vector&gt; class ServiceOrganization; class Building { static char* m_city; const unsigned int m_high_size; std::vector&lt;int&gt; m_flats; unsigned int m_square; ServiceOrganization&amp; m_organization; public: Building(); }; int main() { Building house; return 0; }//====================== end of sample.cpp ========================== </pre> Какие члены класса Building из файла sample.cpp обязательно должны быть инициализированы в списке инициализации?
<pre> //====================== start of sample.cpp ========================== #include &lt;vector&gt; template &lt;class Storage, int size&gt; class Input { public: Input() : m_store(size) {} private: Storage m_store; }; int main() { Input&lt;int,5&gt; a1; Input&lt;int,6&gt; a2; Input&lt;std::vector&lt;int&gt;,10&gt; v3; Input&lt;std::vector&lt;short&gt;,10&gt; v4; Input&lt;double, 30&gt; *pMyInput = nullptr; return 0; } //====================== end of sample.cpp ========================== </pre> Сколько описаний пользовательских типов будет в скомпилированном коде из файла sample.cpp?
<pre> //====================== start of sample.cpp ========================== int main(int argc, char* argv[]) { int a = 0; int b = 0; int X = 0; auto lf1 = [a,b,X] (int x) {return x > 0;}; auto lf2 = [a,b] (int x) { x++; return x;}; auto lf3 = [=] (int x) { x++; return x;}; auto lf4 = [&amp;] (int x) { x++; return x;}; auto lf5 = [] (bool&amp; z) { z = !z; return;}; return 0; } //====================== end of sample.cpp ========================== </pre> Какие лямбда функции из примера выше имеют доступ к значению переменной X?
<pre> //====================== start of sample.cpp ========================== class ARef { public: ARef(A &amp;a, int i) : _a(a), _ix(i) {} ARef&amp; operator= (T t) { return *this;} operator T() {return _t;} operator A() {return _a;} A& getA() { return _a;} bool operator == (A&amp; a) {return _a == a;} private: A&amp; _a; int _ix; T _t; }; class A { friend class ARef; public: A() {} ARef operator[] (int ix) {return ARef(*this, ix);} operator ARef() {return ARef(*this, ix);} }; //====================== end of sample.cpp ========================== </pre> Какие из методов класса ARef из файла sample.cpp являются необходимыми для поддержки идиомы контекстно-зависимой перегрузки операции индексирования агрегата?
<pre> //====================== start of sample.cpp ========================== int main(int argc, char* argv[]) { const int a = 0; int b = 0; const int X = 0; int Y = 0; int Z = 0; auto lf1 = [&amp;Y, Z, &amp;a, &amp;b, X] (double x) {return x &gt; 0;}; return 0; } //====================== end of sample.cpp ========================== </pre> Значения каких переменным лямбда функция lf1 может изменить?
<pre> //====================== start of sample.cpp ========================== #include &lt;algorithm&gt; #include &lt;vector&gt; int main(int argc, char* argv[]) { std::vector&lt;int&gt; v1; auto lf1 = [] (int x) {return x > 0;}; auto lf3 = [] (int&amp; x) { x++; return;}; auto lf5 = [] (bool&amp; z) { z = !z; return;}; int cnt1 = std::count_if(v1.begin(), v1.end(), lf1); int cnt2 = std::count_if(v1.begin(), v1.end(), [] (int x) -> bool {return x+1;}); int cnt3 = std::count_if(v1.begin(), v1.end(), lf3); int cnt4 = std::count_if(v1.begin(), v1.end(), [] (int x, int&amp; y) -> double {return x+y;}); int cnt5 = std::count_if(v1.begin(), v1.end(), lf5); return cnt1; } //====================== end of sample.cpp ========================== </pre> При вычислении каких переменных лямбда-функции в алгоритме count_if используются корректно?