2016-03-24 16 views
1

Ben bir değişken x, ilan var. Şimdi x türünden bir std::vector tutan unsurları beyan etmek istiyorum, bu yüzden yazmak: Bu derleyici hatasına yol açartypeof (x) şablon argümanı olarak mı?</p><code>f</code> bir fonksiyonu ve <code>y</code> bir değişkendir <pre><code>auto x = f(y); </code></pre> <p>, hem başka bir yerde tanımlanmış:

std::vector<typeof(x)> v; 

. Bir çözüm, x'un açık argümanını buraya koymaktır, ancak bence bu, x'un beyanında auto'un amacını ortadan kaldırır! Öyleyse, türünü açıkça yazmadan, şablon argümanı olarak x türünü nasıl kullanabilirim (böylece kodumda geçerli kalır).

+3

'decltype (x)'? – peppe

+1

Use decltype() 'yerine – DimChtz

+2

Bunu mu demek istediniz: [' decltype'] (http://en.cppreference.com/w/cpp/language/decltype)? Yoksa gerçekten GCC ve onun ['typeof'] (https://gcc.gnu.org/onlinedocs/gcc/Typeof.html) kullanıyor musunuz? Ayrıca, tam derleyici hata mesajını gönderebilir misiniz? – Cornstalks

cevap

4

Yalnızca GNU Compiler, typeof ürününe sahiptir. Bunun yerine, C++ 11 özelliği olan decltype'u kullanın.

İlgili konular