Есть ли способ протестировать ошибки во время компиляции, но без генерации ошибки? Например, если я создаю класс, который не копируется, я бы хотел проверить, что попытка его скопировать приведет к сбою компилятора, но я все равно хотел бы выполнить другие тесты времени выполнения.
struct Foo {
int value_;
Foo(int value) : value_(value) {}
private:
Foo(const Foo&);
const Foo& operator=(const Foo&);
};
int main()
{
Foo f(12);
assert(f.value_ == 12);
assert(IS_COMPILER_ERROR(Foo copy(f);));
} // Would like this to compile and run fine.
Я думаю, это не может быть сделано так просто, но есть ли идиоматический способ сделать это, или я должен использовать собственное решение (возможно, используя скрипты, компилирующие отдельные файлы тестов и тестирование результатов?)?
N.B.: Я взял не копируемый только для иллюстрации своей точки зрения, поэтому меня не интересуют ответы об использовании boost:: noncopyable и т.д.