Alt 19.Ekim.2017
  #1
grsnlu - ait Kullanıcı Resmi (Avatar)
Kullanıcı
Reklam
main fonksyonunda , const int göstergesinin bir değişkenini oluşturdum, ve onu auto& tarafından bildirilen bir değişkene atadım. Tipleri kontrol etmek için decltype(x) kullanılıyor. Const int* türüne dönüşmesini bekliyordum. Fakat is_same sürekli false çeviriyor

Kod:
int main()
{
    int a = 10;
    const int * cp_val= &a;
    auto& x = cp_val;
    bool is_const_int_ptr = std::is_same<decltype(x), const int *>::value; // returns 0

    // *x = 100; // error: assignment of read-only location '* x'
}
Ancak aşağıdaki helper fonksiyonu eklersem:

Kod:
#include <boost/type_index.hpp>

template<typename T> 
void print_type(T)
{cout << "type T is: "<< boost::typeindex::type_id_with_cvr<T>().pretty_name()<< '\n';}
Main’de işlevi çağırıyorum:

Kod:
print_type(x); // It returns int const*
diyor. std::is_same’de bir hata mı yapıyorum. Lütfen yardım edin.
Alt 19.Ekim.2017
  #2
abulbl - ait Kullanıcı Resmi (Avatar)
Site Kurucusu
auto& x için, x'i referans olarak açıkça bildiriyorsunuz; bu yüzden onu tipi const int *& ve const_int göstergesi için referans şeklinde olmalıdır.
Derleme hatası mesajından derleme zamanında doğru türünü elde etmek için daha iyi bir fikir (Effective Modern C ++ (Scott Meyers) 'den).

Kod:
template <typename>
struct TD;
o zaman onu böyle kullan:

Kod:
TD<decltype(x)> td;
Böyle bir hata mesajı alacaksınız:

Kod:
source_file.cpp:15:21: error: implicit instantiation of undefined template 'TD<const int *&>'
    TD<decltype(x)> td;
                    ^
Yardımcı işleviniz parametreyi değerlere göre alır; argümanın referans numarası tür tenzilinde dikkate alınmayacak, bu yüzden const int * değerini almış olursunuz.

« önceki Konuya git | sonraki Konuya git »

Şuan bu sayfada bulunan kişiler: 1 kişi (0 üye ve 1 ziyaretçi)
 
Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok
BB kodu Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Seçenekler
Stil



Tüm Zamanlar GMT +2 Olarak Ayarlanmış. Şuanki Zaman: 16:34.

Bize Yazin - Webmaster Forumu - Arşiv - Yukarı git
Powered by vBulletin™ Version 3.8.9 Beta 1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.
Telefon zil sesleri | Prezeci.com