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