, bağlayıcı o fonksiyonu bağlantı alamamaktan şikayetçi :Hata mesajı "şablon parametresi olarak geçirilen şablon işlevi tanımsız başvuru"
$ g++ -o test2 test2.cpp && ./test2
/tmp/ccahIuzY.o: In function `Base<&(int identity<10>())>::f()':
test2.cpp:(.text._ZN4BaseIXadL_Z8identityILi10EEivEEE1fEv[_ZN4BaseIXadL_Z8identityILi10EEivEEE1fEv]+0xd): undefined reference to `int identity<10>()'
collect2: error: ld returned 1 exit status
Uzmanlığı açıklarsam, kod beklendiği gibi derler ve bağlar. Ayrıca, Base<identity<10> >
yerine Base<identity<Val> >
'dan miras kalırsam, kod beklediğim gibi çalışır.
burada deneyin: http://coliru.stacked-crooked.com/a/9fd1c3aae847aaf7
Ben neyi özlüyorsun?
Bu sorun bir gcc hata olduğunu tahmin etmekteyiz: o derler ve clang ve icc ile Tamam bağlantılar kullanımların herhangi değişmiyor potansiyel-etrafında çalışma bir işlevi yerine bir sınıf şablonu
identity
kullanılması olacaktır. BTW, _identity() _ adı normalde sonucun argümanla aynı olduğu dönüşüm için kullanılır. –@ DietmarKühl Eh, 'kimlik()', 'X' i döndürür. :-) –
melpomene
Çözüm: sınıfı Türetilmiş: public Base (kimlik <10>)> '. [canlı demo] (http://melpon.org/wandbox/permlink/E4aRHqcZaac7vd3C) –