하지만 비주얼 스튜디오 (11)비주얼 스튜디오 (11) 컴파일 타임 오류가 사용하는 표준 : :지도
#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은 이제 std::array<> troll
에 매핑됩니다. 삽입이 잘 작동하고 프로그램이 컴파일됩니다.
error C2512: 'std::array<_Ty,_Size>::array'
: 자료 없음 적절한 기본 생성자
은 무엇 원인> 따라서 그 1
을 맵 트롤 배열을 얻기 위해 노력하고, 다음과 같은 오류와 함께 컴파일되지 않는 프로그램이 - 그러나, 곧 내가 auto z = x[1]
시도로 gcc와 vs11 사이의 이러한 동작 차이와이를 수정하는 방법은 무엇입니까?
감사합니다.
'pairus'는'make_pair'가 아니십니까? (당신의 문제라고 생각하지 마십시오.) – Corbin
그래, 페어 스가 std :: pair <> 타입으로 잘 작동합니다. 이 이상한 컴파일러 동작은 나를 괴롭 히고 있습니다. – ScarletAmaranth
페어 런스는 어떻게 보이나? (사용자 정의 함수라고 가정하거나 make_pair의 MSVC++ 별명입니까?) 나는 당신이 게시 한 코드 어디에서나 기본 생성자가 필요하지 않기 때문에 문제가 페어 루스에 있다고 의심한다. (k가지도에없는 x [k]를 할 경우 기본 ctor가 필요할지라도) – Corbin