tl; dr: D perfect forwarding'u nasıl yapıyorsunuz?D'de mükemmel yönlendirme?
bağlantı büyük bir açıklaması olduğunu ancak örneğin, bu reklam bu yöntemi var diyelim: Ben başka bir yöntem nasıl oluşturabilirim
void foo(T)(in int a, out int b, ref int c, scope int delegate(ref const(T)) d)
const nothrow
{
}
, bar()
, foo()
yerine çağrılabilir, daha sonra foo()
"mükemmel" (yani arama sitesinde derleme/kapsam/etc.
o ref
, in
, out
, inout
, yöntemin const
-lık, pure
-ity, nothrow
vb işlenmemesi nedeniyle elbette
auto bar(T...)(T args)
{
writeln("foo() intercepted!");
return foo(args);
}
çalışmıyor naif yaklaşım ... ve ayrıca değerlerin r değerleri ile nasıl kullanılacağını sınırlar.
Ve bu olası durumların nasıl ele alınacağını bilmiyorum ... herhangi bir fikir?
Bekle, nothrow', 'pure',' const', 'inout',' @ property', '@ safe' ve ben şu anda düşünemiyorum bütün diğer şeylerin' ne olacak? Bunların her biri ('mülk' bile) kod davranışını biraz değiştirebilir ve/veya derlemeyi önleyebilir. – Mehrdad
Sen Şablonunuza bir oto dönüşü gibi ref, ve considition eğer ihtiyaç ve yine de bu yeterli olduğundan emin değilim. – deadalnix
@Mehrdad: İyi puanlar, günümüzde şablonlar için saf olmasına rağmen. – dsimcha