bug 80985에서,이 예제를 고려하십시오 : 모든 경고와 함께이 컴파일취급 GCC의 noexcept 형 경고
template <class Func>
void call(Func f)
{
f();
}
void func() noexcept { }
int main()
{
call(func);
}
활성화, 당신처럼, 수율 :
$ g++ -std=c++14 -Wall foo.cxx
foo.cxx:2:6: warning: mangled name for ‘void call(Func) [with Func = void (*)() noexcept]’ will change in C++17 because the exception specification is part of a function type [-Wnoexcept-type]
void call(Func f)
^~~~
정확히 내가 생각하고 어떻게 할 이 경고와 함께? 수정 프로그램은 무엇입니까?
'call'이 프로젝트의 내부적 인 경우라면 상관 없습니다. 두 개의 다른 번역 단위가 그것을 사용하는 경우에만 중요합니다. 하나는 C++ 17로 컴파일되었고 하나는 그렇지 않았습니다. 그렇더라도'call'은 템플릿 함수이기 때문에 최종 실행 파일에 여분의 정의를 갖는 것 이외에 큰 영향을 미치지 않을 것입니다. –
@DanielH 위의 Barry에 대해 말하고자하는 것이 아니라, -wError를 사용하여 프로젝트를 컴파일하는 경우 해당 "무해한 경고"로 인해 프로그램이 올바르게 컴파일되지 않을 수 있습니다. 그게 중요해. – markt1964
@ markt1964 게시물에는'-Wall' 만 사용됩니다. '-Werror'로 컴파일하거나 컴파일러 에러 (좋은 생각이다)를 피하려고한다면, 그렇다. 문제가 생길 것이다. 상황에 따라'-Wno-noexcept-type'을 추가함으로써 가장 잘 처리 될 수있는 것. –