蒼い夏の空のライブラリー

ブログ名は適当に考えました  このブログの記事のすべてはCC0、パブリックドメインです

ポエム

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_ から始まるようにすると、コード補完が効いて便利です。_ 始まりだとグローバルにある標準の関数が大量にリストアップされます... 末尾は _ をつけてもつけなくても変わらないと思います。つけたほうがちょっとかっこいいかもしれません。(個人の感想です...)

コメント

コメントを書くときに日本語で書くと絶対に文字化けします。これは真理です。