arasındaki fark this question cevap aşağıdaki gcc ile kodunu (code compiled) ve clang (code rejected) çalıştı Ben Test::f
constexpr başlatılması tamam olduğunu düşünüyorum rağmen. Hata clang çıkışları ise:statik constexpr işaretçi işleve, derleyici
error: non-type template argument for template parameter of pointer type 'func'
(aka 'long (*)(int)') must have its address taken
- hangi derleyici doğru?
- Clang doğruysa, neden ve bu hata gerçekten ne anlama geliyor?
DÜZENLEME: "neden", DyP's question bakınız için.
:
ben '& function' aslında' constexpr' için geçerli bir başlatıcı olup olmadığını merak ediyorum. Her iki derleyici de öyle görünüyor. Ama bana çok hoş geliyor. Bu derleme zamanında bilinmez, sadece bağlantı zamanında. – Omnifarious
'& function' bir fonksiyonun adresidir, bu yüzden benim için derleme zamanında bilinir ... Örneğin, bir imleci şablon argümanı olarak işlev görecek şekilde iletebilirsiniz. – Synxis
Bir işlevin bir göstergesi, bir şey… eğer bu paylaşılan bir kütüphanenin bir parçasıysa, örneğin, adres muhtemelen bir "constexpr" olarak nitelendirilebilir mi? –