Yalnızca üye değişkeni döndüren ve muhtemelen istisnaları atlayamayan eğik bir işlevde bir atım belirtimi , bazı derleyiciler tarafından performans üzerinde zararlı bir etkiye sahip olabilecek kötümsemeler (optimizasyonların tersi için yapılmış bir sözcük) için kullanılabilir. Bu Boost literatüründe tanımlanmıştır: İstisna spesifikasyonu
İle bazı derleyiciler doğru optimizasyonlar yapılmış ve bunu haklı bir şekilde bu fonksiyon etkiler performansının kullanılması halinde olmayan içi işlevler üzerinde herhangi bir atış özellikleri yararlı olabilir.
Bana göre, belki de profil oluşturma araçları kullanarak, bir performans optimizasyonu çabasının bir parçası olarak çok eleştirel bir göz tarafından yapılan bir çağrıdır.
Acele edenler için yukarıdaki bağlantıdan bir alıntı ( saf bir derleyiciden bir satır içi işlev üzerine atma belirtmenin kötü istenmeyen etkilerine bir örnek içerir ):
İstisna belirtimi gerekçesi
İstisna spesifikasyonları [ISO 15.4] bazen hangi istisnaların atılabileceğini belirtmek için kodlanır veya programcı performansı arttırmayı umduklarından. Ancak akıllı bir işaretçiden aşağıdaki üyeyi düşünün:
T & operatörü * () const throw () {dönüş * ptr; }
Bu işlev başka hiçbir işlevi çağırmaz; yalnızca işaretçiler gibi temel veri türlerini değiştirir. Bu nedenle, istisna belirtiminin çalışma zamanı davranışı hiçbir zaman çağrılamaz. Fonksiyon tamamen derleyiciye açıktır; gerçekten de satır içi olarak bildirildi Bu nedenle, akıllı bir derleyici, işlevlerin istisnaları atmaktan aciz olduğunu kolayca belirleyebilir ve boş istisna spesifikasyonuna dayanarak yaptığı aynı optimizasyonları yapabilir. Ancak "aptal" bir derleyici her türlü kötümserlik yapabilir.
Örneğin, bir istisna belirtimi varsa bazı derleyiciler satır sonunu kapatır. Bazı derleyiciler try / catch blokları ekler. Bu tür kötümsemeler, kodu pratik uygulamalarda kullanılamaz hale getiren bir performans felaketi olabilir.
Başlangıçta cazip olmasına rağmen, bir istisna belirtimi, çok dikkatli düşünmeyi gerektiren sonuçlara sahip olma eğilimindedir. İstisna belirtimlerindeki en büyük sorun, programcıların bunları, gerçekte sahip oldukları etki yerine programcının istediği etkiye sahipmiş gibi kullanmalarıdır.
Satır içi olmayan bir işlev, "hiçbir şey atmaz" özel durum özelliğinin bazı derleyicilerle bazı faydaları olabileceği yerdir.