модульный тест только для G++ -fsyntax
Я пытаюсь выяснить, если
g++ -fsyntax-only
выполняет только проверку синтаксиса или если он также расширяет шаблоны.
таким образом, я прошу Stack overflow о помощи:
есть ли способ написать программу так, чтобы синтаксически она действительна, но когда расширение шаблона сделано, возникает ошибка?
спасибо!
1 ответов
есть ли способ написать программу так, чтобы синтаксически она действительна, но когда расширение шаблона сделано, возникает ошибка?
зависит от того, является ли ваше определение синтаксически валидный is g++
' s -fsyntax-only
или нет.
следующая простая тестовая программа иллюстрирует это и, я считаю, отвечает на ваш вопрос:
// test.cpp
template< bool > struct test;
template< > struct test< true > { };
int main(void) {
test< false > t;
return 0;
}
попытка построить:
$ g++ /tmp/sa.cpp
test.cpp: In function `int main()':
test.cpp:6: error: aggregate `test< false> t' has incomplete type and
cannot be defined
$ g++ -fsyntax-only /tmp/sa.cpp
test.cpp: In function `int main()':
test.cpp:6: error: aggregate `test< false> t' has incomplete type and
cannot be defined
так что да,-fsyntax-only
тут выполнить расширение шаблона.