diff --git a/paddle/framework/tensor.h b/paddle/framework/tensor.h index f777661a1cde73036c91ba163406ce833ffa55f3..6a152f6a6d748825ee51a9d4cde0977797eab2c3 100644 --- a/paddle/framework/tensor.h +++ b/paddle/framework/tensor.h @@ -37,8 +37,10 @@ class Tensor { template ::value>::type* = nullptr> T* mutable_data(DDim dims, paddle::platform::Place place) { - if (holder_ == nullptr || holder_->Place() != place || - holder_->Size() < product(dims) * sizeof(T)) { + if (holder_ == nullptr || + !(holder_->Place() == + place) /* some versions of boost::variant don't have operator!= */ + || holder_->Size() < product(dims) * sizeof(T)) { holder_.reset(new PlaceholderImpl(place, product(dims) * sizeof(T))); } return static_cast(holder_->Ptr());