У меня странная ошибка при компиляции моего проекта в MSVC.
Я использую Microsoft Visual Studio 15 2017 и компилирую в c ++ 17 (MSVC версия 15.6.85.37198)
Код компилируется на Clang и G ++, но выдает ошибку на MSVC.
Мне удалось уменьшить код, вызывающий ошибку, до следующего фрагмента:
#include <cstddef>
struct Point {
double x;
double y;
double z;
};
template<class... Ps>
void doSomething() {
offsetof(Point, x);
}
int main() {
doSomething();
}
Это дает мне следующую ошибку:
main.cpp(10): fatal error C1903: unable to recover from previous error(s); stopping compilation [build\example.vcxproj]
Сначала я был немного озадачен, так как это была единственная ошибка, и мне потребовалось довольно много времени, чтобы понять, что проблема возникла из offsetof.
Проблема связана с использованием макроса offsetof
внутри шаблонной функции, которая принимает пакет параметров.
Я не думаю, что этот код делает что-то незаконное или использует неопределенное поведение. Итак, проблема с моей стороны или это ошибка в компиляторе?
Спасибо