다음 코드에서 unscoped enumeration을 long long
유형으로 정의했습니다. 이 프로그램은 Clang에서 정상적으로 작동합니다.GCC : 범위가 지정되지 않은 열거 형으로 인해 모호성 오류가 발생 함
그러나 GCC 컴파일러에서 모호성 오류가 발생합니다.
#include <iostream>
enum : long long { Var=5 };
void fun(long long ll)
{
std::cout << "long long : " << ll << std::endl;
}
void fun(int i)
{
std::cout << "int : " << i << std::endl;
}
int main()
{
fun(Var);
}
GCC 생성 오류 :
main.cpp: In function 'int main()':
main.cpp:17:12: error: call of overloaded 'fun(<unnamed enum>)' is ambiguous
fun(Var);
^
main.cpp:5:6: note: candidate: void fun(long long int)
void fun(long long ll)
^~~
main.cpp:10:6: note: candidate: void fun(int)
void fun(int i)
^~~
왜 GCC 컴파일러는 모호한 오류를 주는가?