ancak Visual Studio 11.Visual Studio 11 derleme zamanı hatası kullanarak std :: map
#include <map>
#include <array>
typedef std::pair<const unsigned int, std::array<const unsigned int, 4>> pairus;
int main(){
std::map<const unsigned int, std::array<const unsigned int, 4> > x;
std::array<const unsigned int, 4> troll = {1, 2, 3, 4};
x.insert(pairus(1, troll));
auto z = x[1];
}
1 şimdi std::array<> troll
eşleştirilir. Ekleme iyi çalışıyor ve program derleniyor.
error C2512: 'std::array<_Ty,_Size>::array'
: hiçbir uygun varsayılan yapıcı
nedenleri nelerdir> Dolayısıyla bu 1
eşleştirilmiş trol diziyi almaya çalışırken, aşağıdaki hata ile derleme değil programı - Ama, en kısa sürede i auto z = x[1]
deneyin gcc ve vs11 arasındaki davranış farkı ve nasıl düzeltileceği?
Teşekkürler.
'pair_' make_pair' olmamalıdır? (Bunun senin problemin olduğunu düşünmüyorum) – Corbin
Evet, std :: pair <> tipinde olmakla iyi çalışıyor. Bu garip derleyici davranışı beni çok zorlayan – ScarletAmaranth
Eşlik nasıl görünür (özel bir işlev mi olduğu varsayılıyor mu? Veya MSVC++'nin make_pair'in takma adı mı?). Sorunun, çift kodda yattığından şüpheleniyorum çünkü gönderdiğiniz kodun herhangi bir yerinde varsayılan kurucuya gerek yoktur. (Eğer x [k] yaparsanız, varsayılan bir ctor gerekli olsa da, k haritada bulunmaz.) – Corbin