2016-06-04 11 views
0

가정하자 나는 구조체가 extern 키워드가 필요합니다. float가 extern인지 여부는 중요하지 않습니다. (해야합니까?)는 왜 비 형 템플릿 인수에 대한 참조에 대한 외부 링크를 필요로 할

+0

실제로 'extern'이 필요한 곳에 [MCVE]를 표시 할 수 있습니까? –

+0

@ πάνταῥε my 코드가 'extern'이 아니면 컴파일러가 불만을 제기합니다 : 'value'는 'const float'타입의 유효한 템플릿 인수가 아닙니다. 'value'객체가 외부 연결을 가지고 있지 않기 때문입니다. 'gcc') – DarthRubik

+0

GCC는 아직이 분야에서 C++ 11 규칙을 업데이트하지 않았습니다. –

답변

3

코드가 어딘가에 헤더 파일에 있다고 가정합니다.

공교롭게도

, Thing는 오퍼레이터()을 가지며, 이는 두 상이한 CPP 파일에 std::function에 저장된다.

누군가는 두 개의 std::function 중에서 typeids를 가져 와서 동일한 지 묻습니다.

외부 연결을 플로트로 사용하면 분명히 같은 유형입니다. 없으면 표현할 방법이 없습니다.

기본적으로 형식은 부동 소수점 값이 아닌 ID에 종속되며, 표준 외부 링키지 전역 만 해당 형식이 갖고 싶어하는 것과 동일한 "수준"에서 ID를가집니다.

이제 람다에 대해서도 같은 말을 할 수 있지만 람다는 ODR 위반을 매우 자주 발생시킵니다.