前提・実現したいこと
次のようなテンプレート関数で、非const右辺値のみを受け取り可能にしたい。
C++
1#include <utility> 2 3template <class T> void f(T&&); 4 5int main() { 6 int value = 0; 7 const int const_value = 0; 8 9 f(value); // エラーにしたい 10 f(std::move(value)); // これだけOKにしたい 11 12 f(const_value); // エラーにしたい 13 f(std::move(const_value)); // エラーにしたい 14}
質問
以下のようにdeleted定義を利用することで実現できますが、もっと単純に書けないのでしょうか。
ただ単に、転送参照にして欲しくなくて、非テンプレート型Sに対するS&&のように、右辺値を受け取りたいだけなのですが…
C++
1template <class T> void test(T&&); 2template <class T> void test(T&) = delete; 3template <class T> void test(const T&&) = delete;
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/10 15:59