会社のブログログイン登録スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。782件-2クローズされました。この質問では現在、回答を受け付けていません。質問を更新、この投稿を編集して事実と引用で回答されるようにしてください。この質問を改善するC++のstd::mapのインスタンス(下記例では::table)の初期化コードをもう少し綺麗にしたいと思っています。お知恵をお貸しください。※C++17でお願いします詳細magic_enumというenumを便利に扱えるOSSを使用して、std::mapの静的インスタンス(下記例では::table)をグローバル関数(下記例では::trash::initialize)から汚らしく初期化しています。コンストラクタや初期化リストを使って綺麗に書きたいのですが、どうにも難しいので、書き方を教えてください。型やデータは増えても構いませんし、同じ使い方が出来ればstd::mapでなくても構いません(でも出来れば依存は増やしたくないです)。追記(他でも使えるように)::tableの要素のfirstメンバの値を生成するロジックは今後変更される可能性があり、そのときでも有用となる書き方でお願いします。個の銅バッジ154綺麗は主観が入るのでオイラにとってのきれいとあなたにとってのきれいは全く違う可能性があるです。客観的表現ができると回答できる人が増えそう。2:29あなたの綺麗と私の綺麗は違います。「コンストラクタや初期化リストを使って綺麗に書きたい」とは書いているので、その範囲であなたが綺麗だと思うコードを書いて頂ければOKです。モデレーターの独断ではなくこのサイトの参加者による投票で判断されます。いう修飾語によって「主観的な」答えしか集まらないと判断されている可能性があります。コンストラクタ等の書き方が分からないという事であれば、そちらを目立つような文書に見直してもらった方が意図が伝わりやすいと思います。別の質問をしても、懸念点が改善されないままだと同じようにクローズされてしまう可能性があります。既存の質問を編集することを優先してみてください。もこの問題についてよく参考にされる記事になります。table;}();これぐらいですかね。table;}();もっと簡単に済ませられます。10.3.0でビルドしたところ、stringstreamのstr()が失敗するようです。<<演算子の戻り値の型がstringstreamではないからなのかもしれません。私の勘違いでなければstringstreamのインスタンスを宣言しても問題ないと思うので、修正お願いします。あと今回の要件でインライン変数は別に使用しなくても大丈夫です(したほうがいいですが)。12:49修正確認しました。C++17でもオプション指定して使ってるときがあるくらいなのでC++20はまだ...。個人的にはmapインスタンスを別に作らないと構築できないのが少し気になりますが、実装が簡潔=綺麗というところなのでしょうね。13:24クローズされた質問のコメント欄で新しく議論が生まれていたため、この部分をチャットに移動しました。新しい疑問点がある場合は別途新しい質問としてご投稿ください。コメント欄は長い議論をするための場所ではないためです。|求めていた回答ではありませんか?c++のタグが付いた他の質問を参照する。従って情報を開示できることに同意したことになります。選択した項目のみ受け入れる。