bazen böyle bir kod yazmak:CRTP kullanırken hatalar nasıl önlenir? <a href="http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern">CRTP</a> kullanma
// this was written first
struct Foo : Base<Foo, ...>
{
...
};
// this was copy-pasted from Foo some days later
struct Bar : Base<Foo, ...>
{
...
};
Ve ayıklayıcısında kod iz ve Bar'ın üyeleri Base
kullanılan olmadığını görene kadar, yanlış giderse anlamak çok zordur.
Bu hatayı derleme zamanında nasıl gösteririz?
(ı MSVC2010 kullanmak, bu yüzden biraz C++ 0x özellikleri ve MSVC dil uzantıları kullanabilirsiniz)
aslında dtor hiç çağrılmadıysa çalışmaz. – Abyx
@Abyx: İlginç bir şekilde gcc 4.9 ile, eğer struct struct türünde bir nesne oluşturmak için yeni yerleşim kullanırsam: base {} ', * constructor *' S :: S() 'dan dolaylı olarak silindiğinden şikayetçi olur. özel olarak. Ancak bu durumda yıkıcı asla çağrılmaz. –
Daha ilginç olarak, gcc 4.8.1 hiç şikayet etmiyor! –