2016-04-08 48 views
2

için bir sınıf atayabilirsiniz olmadığını kontrol iki sınıfları, a ve b verilen, bazı anlatımEn genel yolu ben C++ başka

my_a = my_b; 

anlamlı olacaktır olmadığını kontrol etmek en genel yolu nedir? is_convertible'u kullanmayı düşündüm, ancak bu bir işleci algılamıyor. Belki sadece ilkel türlerle çalışır? Ben eğer true verecek şekilde testimi istiyorum:

  • a ve b aynı
  • ba
  • a için dökülebilir bir b et

kabul atama operatörü vardır Ve bunun gibi. Böyle bir şeyi bitirmenin bir yolu var mı?

cevap

6

std::is_assignable görme: is_constructible, bu yayınları kapsamaktadır kontrol edebilirsiniz

bool x = std::is_assignable<decltype(my_a), decltype(my_b)>::value; 
+0

Bu benim için işe yaramıyor gibi görünmüyor .. bkz. Güncelleştirme 1. –

+0

@MatteoMonti bunun nedeni, dönüşüm operatörünüzün gizli olmasıdır. – Simple

+0

Çok aptalım. –