Описание тега design-rationale

2 ответа

Почему [line in open("text.txt")] приводит к переводу строки?

(примечание: я не пытаюсь ничего изменить - просто пытаюсь понять) Рассматривая решения для чтения в файле на python, каждый раз, когда символ новой строки должен быть удален: In [5]: [line for line in open("text.txt", "r")] Out[5]: ['line1\n', 'lin…
22 янв '16 в 14:05
4 ответа

Почему в стандартной библиотеке есть find и find_if?

Не удалось find_if просто быть перегрузкой find? Вот как std::binary_search и друзья делают это...
20 авг '10 в 17:16
2 ответа

В чем разница между FilterWriter и Writer в Java?

Из https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html и https://docs.oracle.com/javase/7/docs/api/java/io/FilterWriter.html, я считаю, что FilterWriter абстрактный класс, который расширяет Writer и не имеет никаких дополнительных способов…
03 авг '16 в 04:32
4 ответа

Почему типы параметров не могут быть ослаблены в переопределенных методах?

Этот код недействителен: interface Foo { public void foo(final String string); } public class Bar implements Foo { // Error: does not override. @Override public void foo(final Object object) { } } Потому что каждый String очевидно, ObjectЯ бы ожидал…
09 апр '12 в 00:58
1 ответ

Ссылка на значение пустого необязательного

Я видел следующую картину несколько раз: // T is a type, this is at namespace scope std::aligned_storage_t<sizeof(T), alignof(T)> storage; T &t = reinterpret_cast<T &>(storage); Это, в сочетании с адекватным пространством имен и …
2 ответа

Почему модули явно названы в файлах?

Из ссылки на язык D: Модули имеют непосредственное соответствие с исходными файлами. Имя модуля - это имя файла с удаленным путем и расширением. Имена модулей по-прежнему указываются в файлах явно. module foo; какой в ​​этом смысл? Если модули соотв…
3 ответа

Почему std:: set<K, C, A>:: erase не берет const_iterator?

Похоже, что в соответствии с ISO 14882 2003 (он же Священный Стандарт C++) std::set&lt;K, C, A&gt;::erase принимает iterator в качестве параметра (не const_iterator) из 23.3.3 [2] void erase(iterator position); Также следует отметить, что в моей реа…
13 июл '11 в 19:52
3 ответа

Delphi: Что такое Application.Handle?

Что такое TApplication.Handle? Откуда это взялось? Почему это существует? И самое главное: почему все формы имеют его в качестве дескриптора родительского окна? Помощь Delphi гласит: TApplication.Handle Предоставляет доступ к дескриптору окна основн…
05 фев '10 в 03:16
2 ответа

Почему для частичной специализации в нетиповом аргументе запрещено использовать параметры вложенного шаблона

У меня есть этот код template&lt;int N, bool C = true&gt; struct A; template&lt;int N&gt; struct A&lt;N, !(N % 5)&gt; { /* ... */ }; // should work A&lt;25&gt; a; То есть для чисел N которые делятся на 5Компилятор должен использовать частичную специ…
1 ответ

Вариант использования для std:: обещание::set_{значение | исключение}_at_thread_exit

Когда я должен использовать std::promise::set_value_at_thread_exit / std::promise::set_exception_at_thread_exit над std::promise::set_value / std::promise::set_exception? Единственное отличие состоит в том, что первые гарантируют, что связанное буду…
13 ответов

Почему оператор std::map [] создает объект, если ключ не существует?

Я почти уверен, что где-то уже видел этот вопрос (comp.lang.C++? Google, похоже, тоже его там не находит), но быстрый поиск здесь, похоже, не находит его, вот он: Почему оператор std::map [] создает объект, если ключ не существует? Я не знаю, но для…
28 окт '09 в 19:30
2 ответа

Почему drand48() и друзья устарели?

В конце концов, они кажутся лучше стандартного libc rand(). Я что-то пропустил? (Я потратил некоторое время на поиск этого в Интернете, и единственный другой пример этого вопроса, который я мог найти, был в контексте предвзятости распределения и ост…
12 авг '14 в 16:26
7 ответов

Почему C#(или.NET) не должны позволять нам помещать статический / разделяемый метод в интерфейс?

Почему C#(или.NET) не должны позволять нам помещать статический / разделяемый метод в интерфейс? казалось бы, дубликат отсюда. но моя идея немного отличается, я просто хочу добавить помощника для моих плагинов (интерфейс) не должен ли C# хотя бы доп…
30 июн '09 в 08:39
3 ответа

Почему opAssign не перегружается для классов?

Эта таблица говорит, что перегрузка присваивания возможна только для структур, но не для классов. Это удивляет меня. Не является ли синтаксический сахар A = B безвредны? Каково было обоснование дизайна для ограничения его структурами?
2 ответа

Каково обоснование использования спецификации доступа для метода / поля?

В C++ спецификатор доступа для поля или метода основан на его расположении в соответствии с первой ранее объявленной спецификацией доступа: public: int my_public_variable; private: void secretPrivateOperations(); int internal_counter; Каково логичес…
29 сен '15 в 22:25
2 ответа

Почему у std::basic_ios есть открытый конструктор?

std::basic_iosимеет публичный конструктор: explicit basic_ios (std::basic_streambuf&lt;CharT,Traits&gt;* sb); ИМО, единственная причина, по которой у класса есть общедоступный конструктор, - это использование автономного экземпляра этого класса в пр…
26 ноя '19 в 19:10
2 ответа

В чем причина исключения копирования в C++?

По какой причине стандарт C++ позволяет (требует) компиляторам оптимизировать вызовы конструктора копирования (в определенных случаях), даже если он может содержать наблюдаемые побочные эффекты? Если я не ошибаюсь, правило "как будто" уже позволяет …
2 ответа

IEEE 754: обоснование формата: субнормальные и нормальные числа

Может кто-нибудь уточнить: Почему именно формат субнормальных чисел ±(0.F) × 2^-126 и нет ±(1.F) × 2^-127? Почему именно формат нормальных чисел такой: ±(1.F) × 2^exp а не, скажем, ±(11.F) × 2^exp, или, скажем, ±(10.F) × 2^exp?
3 ответа

Почему библиотека fmt не предназначена только для заголовков?

Я знаю, что можно использовать fmt библиотека форматирования в режиме только заголовков: Как использовать библиотеку fmt в режиме только заголовка? но - почему это не только заголовок, точка? То есть в чем преимущество использования его в режиме без…
15 июн '21 в 23:32
2 ответа

Требуется ли преобразование реального числа с плавающей точкой в ​​целое число, чтобы значение было усечено до нуля, чтобы облегчить перенос кода с Фортрана на C?

C11, 6.3.1.4 Действительное число с плавающей запятой и целое число: Когда конечное значение реального плавающего типа преобразуется в целочисленный тип, отличный от _Bool, дробная часть отбрасывается (т. Е. Значение обрезается до нуля). Каково обос…