c++、同じ名前の関数でこの場合どっちが使われるのかわからない。Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。登録してこのコミュニティに参加するどなたでも質問していただけますどなたでも回答していただけます最もよい回答には賛成票が入り、最上位に上がりますホーム質問タグユーザーc++、同じ名前の関数でこの場合どっちが使われるのかわからない。n>のほうの関数をまた使ってるのでしょうか。array3のほうでエラーになります。coutでいつ使われてるか確認しようとしましたがエラーになるので使えませんでした。名前が同じなので混乱しています、解説をお願いしたいです。して解釈される場合があり、表示から消えてしまうときがあります。このため、次からは行内のコード部分もコードとして装飾して頂けると助かります。押すことで自動的に装飾することができます。なんのこっちゃ状態ですね。sunto<0>()がない場合のコンパイラの動きを確認してみます。sunto<1>();}という関数を生成します(テンプレートの実体化)。sunto<0>();}を生成します。sunto<-1>();}を生成します。今度はsunto<-1>()が出来たので...という具合に、これはいつまでも無限に続きます。実際には無限に関数を生成することは不可能なので、いつかはメモリ不足か何かでコンパイルが失敗します。sunto<0>()を消した時のエラーの理由です。0;}があるときのコンパイラの動作を説明します。これはテンプレートの特殊化といい、n==0の時に限って、特別なコードを使うように指示するものです。前と同じようにsunto<2>();を呼び出すと、n==2とn==1の時は、先ほどと同じですが、n==0の時に特殊化されたコードを生成します。0;}というコードが生成され、無事にコンパイルできるようになります。sunto<0>()の中でstd::coutを使うとエラーになるのは、constexprがついているからです。constexprがついていると、関数の結果はコンパイル時に決定しなければなりませんが、std::coutは実行時に値を出力するので、コンパイル時には呼び出せません。constexprと矛盾してしまうのでエラーになります。array3[sunto<3>()];でエラーになってしまいます。配列のサイズは、コンパイル時に分かっていなければなりません。suntoにconstexprがついていれば、コンパイル時に計算結果が出せることが保証されるのでコンパイルが通りますが、ついていなければ保証がないのでエラーになります。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。会を開催します🎉サイトの未翻訳箇所を見つけて、もくもく会で直しましょう関連する質問4PicoJSONでarray型の読み込み0可変長引数テンプレートメンバ関数へのポインタ。その引数が期待通りにならない。size_t?1原因のわからないコンパイラエラーメッセージ1c++,文字列配列ベクトルで原因のわからないコンパイルエラー0c++,return文でエラーの解決方がわからない。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。