Şablon varsayılanı durumunda, argüman olarak aldıkları her şeyden başka bir şey yapmayan bir işleve ihtiyacım var. Özellikle referanslar, konstrüksiyon vb. Korunmalıdır. transparent(/* something */)
yazımı, /* something */
yazılmasına tamamen eşdeğer olmalıdır.İşlev iletme argümanı ve basitçe hiçbir şey yapmıyor
Bu amaç için aşağıdaki işlev tanımı doğru mu?
template <class S>
decltype(auto) transparent (S && s) { return std::forward<S> (s); }
Uygulamanın doğru olduğunu düşünüyorum. Ama amacı nedir? Temelde std :: forward' olarak yeniden adlandırdınız. –
'template struct Dönüştürme {/ * operatörü() hiçbir şey yapmamalıdır * /}; template <> struct Dönüştürme {MyOtherType işleci() (MyType t) {return wrap (t); }; '. 'Dönüş Dönüşümü {} (/ * fonksiyonum ne olursa olsun * /); –
JohnB