C++23からauto(x)の形式のキャストが可能になります。 template<std::copy_constructible T> void f(T x) { T p = auto(x); // ok、C++23から } これに関連する仕様等のメモです。 prvalue値へのキャスト 細かい仕様の話 利点や用途 decay-copyとの違い 規格書における置き換え コンセプト定義における利用例 参考文献 prvalue値へのキャスト auto(x)の形式のキャストはxをその型をdecayした型の値としてキャストするものです。 型のdecayとはその型からCV/参照修飾を取り除き、配列/関数はそのポインタに変換するものです。配列/関数以外の場合、autoによるキャストはxをその型のprvalueへキャストします。 そして、auto(x)のキャストは単なる型変換ではなく、キャスト結果のpr