Derleyici bir şikayeti bir rengin referansına bağlama girişiminde bulunduğumu şikayet ediyor ancak nasıl göremiyorum. Ben C++ 11 için yeni, semantik vb. Taşıyorum, lütfen benimle birlikte ol. Bu yöntemi çağırırReferans bağlayıcısını yeniden adlandırmak için Lvalue
template <typename Key, typename Value, typename HashFunction, typename Equals>
Value& FastHash<Key, Value, HashFunction, Equals>::operator[](Key&& key)
{
// Some code here...
Insert(key, Value()); // Compiler error here
// More code here.
}
:
template <typename Key, typename Value, typename HashFunction, typename Equals>
void FastHash<Key, Value, HashFunction, Equals>::Insert(Key&& key, Value&& value)
{
// ...
}
aşağıdaki gibi elde hataları tutmak: Ekle() çağrı
cannot convert argument 1 from 'std::string' to 'std::string &&'
Ben bu işlevi var. Operatör aşırı yükünde bir değer olarak tanımlanan key
mu değil mi? Neden bir değer olarak yeniden yorumlanıyor?
Teşekkürler. Burada
Sadece "Anahtar" lvalenin türü değil midir? Rvalue-reference-ness hala nasıl korunur? – hvd
Bu, ancak hvd'nin geliştirdiği sorunu anladığından emin değilim. Açıklar mısınız? –
@hvd Korunan bir argüman türü kesintisi olmadığından korunur - düzenlememe bakın. – polkadotcadaver