Skip to content
Go back

引数が消失するClangのバグ?

· Updated:
  • 2023/03/24現在、Clang 16.0において、型消去クラスへの引数渡しが正常に行われない
  • 簡単に発生するわけではなく複合的な状況で発生する様子
    • 可変長のテンプレートパラメータを持つ関数内で、関数側のパラメータパックで引数を受けてタプルに転送して構築するクラスを定義し、そのクラスをmake_sharedして返すと、なぜか、コピーされずにデフォルト構築されてしまう
    • タプル型は正常に定義されているので、パラメータ自体が渡っていないというわけではない
  • テンプレートクラスとして関数の外で定義してやれば正常に動作するようになる
  • テストコード:https://godbolt.org/z/GT7qM843f

2025/06/25追記:Clang 17だと期待通りに動作したので、v16のバグだったみたい。