Используя CRTP, иногда я пишу такой код:
// this was written first
struct Foo : Base<Foo, ...>
{
...
};
// this was copy-pasted from Foo some days later
struct Bar : Base<Foo, ...>
{
...
};
И очень сложно понять, что пойдет не так, пока я не отсканирую код в отладчике и не увижу, что члены бара не используются в Base
.
Как выявить эту ошибку во время компиляции?
(Я использую MSVC2010, поэтому я могу использовать некоторые функции С++ 0x и расширения языка MSVC)