나는 Visual Studio 2010
과 SP1을 사용하고 있습니다. 다음 코드는 컴파일러를 충돌시킵니다.컴파일러가 자동으로 충돌 함
template <typename T>
class MyClass
{
public:
typedef int my_int;
const my_int foo();
};
template <typename T>
const auto MyClass<T>::foo() -> my_int
// auto MyClass<T>::foo() -> const my_int // THIS WORKS!
{
return my_int(1);
}
int main()
{
MyClass<int> m;
m.foo();
}
문제를 해결하는 주석 처리 된 줄을 유의하십시오. 여기에서 auto
을 올바르게 사용하고 있습니까 (const
한정자 auto
). 해결 방법은 기본적으로 정확히 동일한 것입니까? 즉, 컴파일러의 버그가 해결 될 때까지 안전하게 사용할 수 있습니까? 그리고 마지막으로, 나는이 문제를 겪고있는 유일한 사람인가, 그렇지 않다면 나는 버그 보고서를 제출할 것이다.
참고 : 나는 여기의 const가 거의 이해하지 못한다는 것을 알고 있습니다. 나는 실제 프로젝트에서 const
객체에 대한 참조를 반환하는 작은 프로젝트에서 버그를 복제하려고했습니다.
확장 또는 추가 기능이 원인 일 수 있습니다. 내 설치로 몇 가지 오류로 컴파일 완료. –
@CaptainObvlious : 어떤 오류가 표시됩니까? 내가 볼 수있는 한, 그 코드는 컴파일되어야한다. – Samaursa
실제로 컴파일됩니다. http://ideone.com/iaFxeu – Samaursa