Ну и полная аналогия с C# от того же MS - если тип реализует IDisposable с единственным методом void Dispose(), то объекты этого типа можно использовать с using var x = smth(). А если реализует IAsyncDisposable с единственным методом ValueTask DisposeAsync(), то можно делать await using var x = smth(). При этом тип может реализовывать оба этих интерфейса, и пользователь может выбирать, что вызвать (через using/await using) IAsyncDisposable при этом появился гораздо позже, и после его появления в абстрактные классы стандартной библиотеки стали добавлять примерно такие реализации (пример из DbConnection) public virtual ValueTask DisposeAsync() { Dispose(); return ValueTask.CompletedTask; }
При этом мы сразу можем писать await using var connection, а асинхронным его освобождение станет тогда, когда авторы драйвера БД, которые своё соединение наследуют от DbConnection, реализуют его "по-настоящему"
Ну там же прям следующим предложением говорится "Заметим, что я не слишком забочусь о проверке границ, хотя для ваших целей она, очевидно, понадобится."
Интересный 18 пункт. Понятно, что на уяснение задачи можно тратить больше времени, чем на ввод кода. Но для меня это скорее выливалось в идею, что можно начинать вводить код, пилить прототипы (в том числе когда задача - впилить кусок в монолит), таким образом пробуя идеи. Опять же личное впечатление: "проектирование на бумаге" не дает такого понимания нюансов и возможных проблем, как попытка написать код.
Если автор под задачей имеет ввиду написание целой системы, то конечно да, тут он прав
Когда-то на выступлении на у нас кафедре докладчик говорил «си-плюс-плюс» и «пайтон», на что его поправляли, что либо «си-плас-плас» и «пайтон», либо «си-плюс-плюс» и «питон».
For each of the signed integer types, there is a corresponding (but different) unsigned
integer type (designated with the keyword unsigned) that uses the same amount of
storage (including sign information) and has the same alignment requirements.
В стандартах C++ фраза повторена почти дословно (есть пункт про «same amount of
storage»).
Так что это какие-то странные реализации.
Автор сделал перевод статьи, опубликованной в начале 2022
Ну и полная аналогия с C# от того же MS - если тип реализует IDisposable с единственным методом void Dispose(), то объекты этого типа можно использовать с using var x = smth(). А если реализует IAsyncDisposable с единственным методом ValueTask DisposeAsync(), то можно делать await using var x = smth(). При этом тип может реализовывать оба этих интерфейса, и пользователь может выбирать, что вызвать (через using/await using)
IAsyncDisposable при этом появился гораздо позже, и после его появления в абстрактные классы стандартной библиотеки стали добавлять примерно такие реализации (пример из DbConnection)
public virtual ValueTask DisposeAsync()
{
Dispose();
return ValueTask.CompletedTask;
}
При этом мы сразу можем писать await using var connection, а асинхронным его освобождение станет тогда, когда авторы драйвера БД, которые своё соединение наследуют от DbConnection, реализуют его "по-настоящему"
Ну там же прям следующим предложением говорится "Заметим, что я не слишком забочусь о проверке границ, хотя для ваших целей она, очевидно, понадобится."
Stormgate делает Frost Giant Studios, где работают многие бывшие ключевые разработчики из Blizzard, так что надежда есть :)
Тут сложность удаления по ключу вырастает до линейной :)
Интересный 18 пункт. Понятно, что на уяснение задачи можно тратить больше времени, чем на ввод кода. Но для меня это скорее выливалось в идею, что можно начинать вводить код, пилить прототипы (в том числе когда задача - впилить кусок в монолит), таким образом пробуя идеи. Опять же личное впечатление: "проектирование на бумаге" не дает такого понимания нюансов и возможных проблем, как попытка написать код.
Если автор под задачей имеет ввиду написание целой системы, то конечно да, тут он прав
Только наоборот, Rectangle и isSquare
dotnet dev-certs https --trust
www.hanselman.com/blog/DevelopingLocallyWithASPNETCoreUnderHTTPSSSLAndSelfSignedCerts.aspx
Говорят, не работает на линуксе, но там и галку в студии поставить не получится :)
Если в линтере надо делать правило "не использовать фичу X", возможно, с фичей что-то не так :)
А в целом, какая разница? :)
В стандартах C++ фраза повторена почти дословно (есть пункт про «same amount of
storage»).
Так что это какие-то странные реализации.
В чем разница со специализированной библиотекой?