cpp-intro
cpp-intro copied to clipboard
Beginner's guide for C++
本文では、non_ofの実装として ```auto none_of = []( auto first, auto last, auto pred ) { for ( auto iter = first ; first != last ; ++iter ) { if ( pred(*iter)...
012-floating-point.mdの[NaN(Not a Number)の節](https://github.com/EzoeRyou/cpp-intro/blob/master/012-floating-point.md#nannot-a-number)で、 > // false bool d = NaN != NaN ; とあります(コードから抜粋)。しかし、[このサイト](https://en.cppreference.com/w/cpp/types/numeric_limits/quiet_NaN)の例でgcc 11.1(C++20)を選び、 > std::cout
``` // ムーブ Integer( Integer && r ) : ptr( r.ptr ) { r.ptr = nullptr ; } Integer operator =( Integer && r ) { delete ptr ; ptr...
## 再現コード ```cpp #include "../all.h" void f(const int &){ std::cout
"033-vector-implementation"に関してです。 `std::string * s = traits::construct( a, p, "hello") ;` と、traits::constructの戻り値を定義していますが、[c++ reference](https://cpprefjp.github.io/reference/memory/allocator_traits/construct.html)を見るとtraits::constructの戻り値はvoidですし、`std::string *s`と定義する必要はないのではないでしょうか?
5章 https://github.com/EzoeRyou/cpp-intro/blob/master/005-the-restaurant-at-the-end-of-the-branch.md の、論理否定の説明のところでうまく理解ができず質問させていただきたく issue を立てさせていただきました。 以下の部分で「ロケットが発射可能なときに実行される」というコメントがあるのですが、コードは「ロケットが発射可能ではないときに実行される」ように読めます。ただ、そうすると一つ前の例と `is_rocket_ready_to_launch()` の中以外は同じになってしまいますし、実行される内容も発射可能ではないはずなのに、発射シーケンスに入ってしまうように読めます。 ``` int main() { // ロケットが発射可能なときに実行される if ( !is_rocket_ready_to_launch() ) { // カウントダウン std::cout 論理否定演算子を使うと、`false`のときのみ実行されてほしい条件分岐が書きやすくなる。 > 同じように、`true`のときに実行されてほしくない条件分岐も書ける。 と2つの例が同じ条件について例示をしているように読めてしまい、この2つでどういう違いがあるのかわからず、間違いであるのか私の理解が追いついていないのかわからず困っております。
19章の > コンストラクターはクラスが初期化されるときに実行される。例えば以下のプログラムを実行すると、 > > > ~~~cpp > int main() > { > S a(1) ; > S b(2) ; > S c(3) ; > } > ~~~ > >...
[16.6節のsearch](https://github.com/EzoeRyou/cpp-intro/blob/master/016-algorithm.md#search)中の例のコードをコンパイルすると,no viable conversion error となります. std::searchの動作は(文中の記法のもと) 「要素の並びがイテレーター[first1, last1)の範囲に存在すれば, 最初に一致する並びの先頭のイテレータを返し,そうでない場合はlast1を返す」 ではないでしょうか.
バージョン: commit a23c2c37c85cc172e99254342fe6c394838f1b56 及び 書籍版の初版 「22章 配列」のint型5要素の配列のストレージの図が、文章ではintが4byteの環境での話としているのに、図では1要素2byteとなっていて、末尾の(0~4番目の内の)4番目の要素が20byteのストレージのちょうど真ん中に来てしまっています。 顧客が本当に必要な図は、1要素4byteとして、末尾の4番目の要素が20byteのストレージのちょうど最後に来る図でしょうか。
008-loop.md の一番最後の factorial 関数の例ですが、 > このコードは末尾再帰になっている。 とありますが、なってないように見えます。 私の知ってる末尾再帰は次のようなものです。 ```cpp int factorial(int n, int acc=1) { if (n int factorial_loop(int n) { int acc = 1; while (true) { if (n