template <typename T>
T go(T a, T *b){ T *t; return *t;}
int main() {
const int x = 10;
go(x, &x);
return 0;
}
derleyici hatası verir?Şablon argüman kesinti arızası
Bu derleme hatasını düzeltmek için
go<const int>(x, &x);
argümanlarının türünü belirterek derleyici kesinti işlemini geçersiz kıldı, ancak yine de neden bunu yapmak gerekir?
Teşekkürler, bu ilginç, ama bunu dahili olarak gerçekleştirir hile göz önünde bulundurarak iyi bir programlama uygulama olacağını düşünüyorsunuz: clang bunun için oldukça açık bir mesaj veriyor. –
@SauravSahu Şablonlarla ilgili önemli olmayan şeyler yapmaya başladığınızda, böyle bir "NonDeduced" bir yere sahip olmanız gerekir. Ve bir kez sahip olduğunuzda, onu da kullanabilirsiniz. Bu özel durumda iyi bir fikir olup olmadığı ya da işlerin farklı bir şekilde yapılıp yapılamayacağı, büyük ölçüde gerçek kullanım durumunuzda gerçekte ne yaptığına bağlıdır. – Angew