üzerinden bir yineleyici değerini beyan nasıl C++ 11'indeC++ 98, ben genellikle bir yineleyici değer türü bir değişken bildirmek için aşağıdaki kullanmak ise decltype
typename std::iterator_traits<Iterator>::value_type value;
biz decltype var ve Ben değer türü anlamak için en kolay yolu düşünmüştü: çoğu yineleyiciler için maalesef
decltype(*iterator) value;
, yineleyici * tipi value_type & ve VALUE_TYPE değildir. Herhangi bir fikir, tip modifikasyon sınıfları olmadan, yukarıdakilere nasıl değer verileceğini (value_type) (ve herhangi bir referans değil)?
ben soru şu oldukça sağlamdır ama başka bir değişken oluşturarak biter mantıksız verilir sanmıyorum.
auto x = *iterator;
decltype(x) value;
Ayrıca ben gerçekten örneğin çıkar sanan tip istiyorum ve sadece bir örneği dikkat Bu değerlerin bir std :: vektörünü bildirmek isteseydim.
ifadesinin tipi kullanılarak olurdum typicall '* iterator'' std :: :: reference' değil, 'value_type' iterator_traits edilir. Bu zorunlu olarak "value_type" ve "decltype" ifadesi, gerçekte değer kategorisine bağlı olduğundan farklı bir ifadenin türünü bildirebilir. –
Düzenleme işleminizin iki satırını birleştirmek isterseniz, eşdeğeri 'typename std :: decay :: type value; ', ancak aşağıdaki yanıtlara bakın ve sadece' t yapmak :) Ben sadece daha önce bu Q/A söz konusu değildi ['std :: çürüme '(http://en.cppreference.com/w/cpp/types/decay) olarak ekliyorum. –