問題タブ [effective-c++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
146 参照

c++ - 再帰的な constexpr 関数

私はEffective Modern C++を読んでいて、consexpressionsを使った非常に基本的な関数を試してみたいと思っていました. 私の C++ のスキルはあまり高くありませんが、この基本的なコードの何が問題なのかわかりません。

コメントで述べたように、このコードは return x == 43337 を使用すると機能しますが、値が大きいとセグメンテーション エラーが発生します。

このコードの何が問題になっていますか? 制約を正しく理解していれば、計算はコンパイル時に行われるはずですが、実行時に計算が行われるようです。また、コールスタックが深くなりすぎるため、値が大きいとセグメンテーション違反が発生するようです。

ただし、コンパイル時に計算が行われる必要があるため、コンパイルエラーが発生しない理由がわかりません(明らかにそうではありません)。

さらに、メソッドの署名が次のようになっている場合、このコードは機能しますか?

constexpr decltype(auto) test( int x )

0 投票する
1 に答える
155 参照

c++ - 効果的な C++ (第 3 版) 項目 4 のコード レイアウト

Scott Meyers の『Effective C++: 55 Specific Ways to Improvement Your Programs and Designs』(第 3 版)では、項目 4 で、異なる翻訳単位で定義された非ローカル静的オブジェクトの初期化がどのようにクラッシュするかを説明し、多数のサンプル コードを提供しています。

しかし、コードのレイアウトについて混乱しています。どうすればよいですか?

私が試したこと:

  • fileSystem.h
  • fileSystem.cpp
  • directory.h
  • directory.cpp

を実行するg++ directory.cpp fileSystem.cppと、次のようになります。

私は#includeC++ の内容に少し動揺しています。それが、Effective C++ 項目 4 のサンプル コードの正しいレイアウトを理解する妨げにならないことを願っています。