C++ でも最近はスマートポインタが使えるわけですが、 std::shared_ptr を作る関数である std::make_shared が IDE の静的解析と相性が悪くて辛みを感じています。(とりあえず CLion での挙動ですが、 VS でも同じような感じじゃないかなぁ…)

  • std::make_shared<Hoge>( とまで打った時に出てくる引数サジェストが Args&&... になってて全く役に立たない。 Hoge クラスのコンストラクタから情報を引っ張ってきてほしい。ついでに言うと引数間違えてても IDE からは警告が出ない(コンパイルして初めて間違っていることが分かる)。
  • Hoge クラスのコンストラクタを右クリックして呼び出し元を検索しても出てこず、よくよく考えたら make_shared 経由なので自分で書いたコードからは直接呼ばれてなかった。make_shared を書いた位置がヒットしてほしい。

make_shared に限らないし、根本的にはスマートポインタにも限らないし標準ライブラリにも限らないわけですが、何とかならんのですかねこれ。

何とかならんのですかね、というか、とりあえず上の1つ目を何とかするためには、

  • テンプレート関数(この場合は make_shared<T>)に引数の型に対するアノテーション(この場合は「T のコンストラクタと同じ」)が書けて、
  • 標準ライブラリ以外を考慮するならアノテーションの書き方が(デファクトでも何でもいいので)標準化されて、
  • それを IDE が認識して引数サジェストする

が必要です。

上の2つ目を(make_shared に限らず)何とかするにはどうしたらいいかサッパリ分からんし…

Trackback

no comment untill now

Add your comment now