ポエム
std::forward
std::forward
は、関数テンプレートであるにも関わらずテンプレート引数を指定する必要があります。しかし、テンプレート引数はだいたい std::forward<decltype(a)>(a)
のような感じで書くと思います。個人的に、これは std::forward
をラップして、
// You can write forward without template argument. template <typename T> [[nodiscard]] constexpr T && forward(T && arg) noexcept { return std::forward<decltype(arg)>(arg); }
のようにしておけば、forward(arg)
のようにテンプレート引数の指定なしで書けるのでいいのではないかと思っています。
[追記]と、思っていた時期もあったのですが、どうやらダメみたいです... ↓参照
c++ - Why is template argument deduction disabled with std::forward? - Stack Overflow
命名規則
キャメルケース、スネークケースなどがありますが、個人的には全部小文字のスネークケースがよいのではないかと思います。なぜなら、全部小文字の場合にはフォーマッタなどでキャメルケースなどに変換することが容易だからです。型は大文字、などとして大文字小文字で区別すると、SomeType sometype;
のように単純に小文字に変換することができない場合があります。その点、型も変数も小文字で統一すると、このようなことがなくスムーズに命名規則を変換できがちです。
また、クラスのプライベートメンバを m_
から始まるようにすると、コード補完が効いて便利です。_
始まりだとグローバルにある標準の関数が大量にリストアップされます... 末尾は _
をつけてもつけなくても変わらないと思います。つけたほうがちょっとかっこいいかもしれません。(個人の感想です...)
コメント
コメントを書くときに日本語で書くと絶対に文字化けします。これは真理です。