テンプレートテンプレートとパラメータの推定に問題があります。コードは次のとおりです。
template<typename U, template<typename> class T>
void test(T<U>&& t)
{
...
}
私はこれが左辺値と右辺値のどちらかを受け入れることを期待していましたが、右辺値でのみ機能します。この場合、折りたたみルール「T &&& = T&」は適用されませんか?
当然、左辺値参照関数も宣言できますが、コードが読みにくくなります。
なぜこれが必要なのかを尋ねる場合は、static_assertを使用してTが特定のクラスであるかどうかを確認することです。もっと簡単な方法があれば、コードを変更させていただきますが、テンプレートテンプレートがこのように使用できるかどうかを知りたいと思います。
ありがとう