テンプレート化されたクラスがあると仮定します
template <typename T>
struct Dummy {
// ...
};
そして、関数'foo'をオーバーロードして、その左辺値または右辺値の参照を受け入れるようにします。私は次のようにいくつかのIsDummy
特性を使用してこれを行うことができます:
template <typename A>
std::enable_if<IsDummy<A>::value, void>
foo(A &&dummy)
{
// ....
}
一部のC++11ドラフトのIIRCは、
template <typename A>
foo(Dummy<A> &&dummy)
{
// ....
}
左辺値と値の両方の参照を受け入れます。
今私の質問:
a)ドラフトで許可されたのは正しいですか?
b)この機能/バグが削除されたのはなぜですか?「コンセプト」との葛藤が原因だったとどこかで読んだと思います。
しかし、私はこれについての適切な参照をもう見つけることができません。誰かがより良い記憶やブックマークを持っていますか?