10
GCC 4.5.1, 수세 리눅스는 i686 우리가 다음 코드 한C++ 정적 템플릿 멤버 초기화 문제
가정하자 :이 경우
template<typename realT> class B
{
public:
B() {std::cout << "B()" << std::endl;}
};
template<typename realT> class A
{
public:
static B<realT> static_var;
};
template<typename realT> B<realT> A<realT>::static_var;
template<> B<float> A<float>::static_var;
template<> B<double> A<double>::static_var;
int main()
{
A<float> test;
return 0;
}
우리가 표준 출력에 출력을 필요가 없습니다. 우리가 이런 식으로 초기화를 변경할 수 있습니다 경우 컴파일러는 부동 소수점 및 클래스 A의 이중 전문화
하지만 ..를 초기화하는 코드를 생성하지 않습니다
template<> B<float> A<float>::static_var = B<float>();
template<> B<double> A<double>::static_var = B<double>();
컴파일러는 코드를 생성하고 우리가해야합니다 출력에서 double "B()".
누군가 이러한 행동에 대한 이해를 도울 수 있습니까?
답변 해 주셔서 감사합니다! – Ribtoks
그래서'x'가 기본 생성자 (C++ 11없이)에 의해 초기화된다면 어떻게할까요? – VF1