Böyle bir destek :: varyantı Var tanımladık: örneği ancak başlatılmamış zamanYükseltme :: varyant değişkeninin boş olup olmadığı nasıl belirlenir?
boost::variant<boost::blank, bool, int> foo;
Bu değişken, tip boost::blank
arasında bir değere sahiptir, boost::blank
şablonu boost :: geçirilen ilk tip olduğu varyant. Bir noktada
foo
başlatıldı olmadığını bilmek istiyorum. Bunu denedim, ama hiçbir iyi sonuçlarla ettik:
if (foo) //doesn't compile
if (foo != boost::blank()) //doesn't compile
if (!(foo == boost::blank())) //doesn't compile
Ben fark değer olduğunu düşünüyorum, foo
başlatıldı zaman, olabilir foo = boost::blank();
yaparak "reset" (örneğin, foo = true
.).
foo
'un başlatılmış olup olmadığını nasıl kontrol edebilirim, yani boost::blank
'dan farklı bir türü var mı?
'foo.which() == 0' –
'bool const is_blank = boost :: olsun (& foo)' –
pmed
@PiotrS. işe yarıyor ama nedenini anlamıyorum. Detaylandırmaya özen gösterilsin mi? – FerranMG