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

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

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

Где и для чего используется ключевое слово restrict?

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

Варианты ответа
при передаче в функцию по указателю объектов данных, для которых гарантируется что к ним нет никакого другого способа доступа кроме этих указателей(Верный ответ)
при объявлении указателей на объекты данных, которые желательно разместить в регистрах процессора
при объявлении указателей на объекты данных, для которых гарантируется что к ним нет никакого другого способа доступа кроме этих указателей(Верный ответ)
при объявлении статических массивов объектов встроенных типов для оптимизации их размещения в памяти
Похожие вопросы
Почему в объявлении POSIX функции memmove() и memcmp() для параметров не используется ключевое слово restrict, а для memcpy используется?
Каковы условия контракта, который заключается с компилятором использованием ключевого слова restrict при объявлении указателя?
Для чего используется атрибут aligned компилятора gcc?
Для чего предназначено макроопределение NULL?
Для чего могут служить закрытые и защищённые конструкторы?
В каких случаях используется идиома «Конверт/письмо»?
Для разработки каких классов программ широко используется язык С?
<pre> //====================== start of sample.cpp ========================== #include &lt;boost/shared_ptr.hpp&gt; #include &lt;boost/scoped_ptr.hpp&gt; #include &lt;boost/weak_ptr.hpp&gt; #include &lt;vector&gt; struct A { virtual ~A(); }; struct B: public A {}; struct C {}; void foo1(boost::scoped_ptr&lt;A&gt; a); void foo2(boost::scoped_ptr&lt;B&gt;&amp; a); void foo3(boost::shared_ptr&lt;C&gt; a); void foo4(boost::scoped_ptr&lt;A&gt;* a); void foo5(std::vector&lt; boost::scoped_ptr&lt;C&gt; &gt;&amp; c); int main(int argc, char* argv[]) { boost::scoped_ptr&lt;A&gt; b1(new A); boost::scoped_ptr&lt;B&gt; b2(new B); boost::scoped_ptr&lt;C&gt; b3(new C); boost::scoped_ptr&lt;A&gt; b4; std::vector&lt; boost::scoped_ptr&lt;C&gt; &gt; v1; v1.push_back(b3); foo1(b1); foo2(b2); foo3(b3.lock()); foo4(&amp;b4); foo5(v1); return 0; } //====================== end of sample.cpp ========================== </pre> В каких из функциях умный указатель boost::scoped_ptr используется правильно?