Fixes for compilation/segfault problems with Intel (issue 94)

This commit is contained in:
Ben Pritchard 2016-02-18 12:38:27 -05:00
parent f8584b630b
commit 0b6cff3d1d
2 changed files with 9 additions and 2 deletions

View File

@ -277,7 +277,7 @@ template <int Nurse, int Patient> struct process_attribute<keep_alive<Nurse, Pat
};
/// Ignore that a variable is unused in compiler warnings
template<class T> void ignore_unused(const T&) { }
inline void ignore_unused(const int *) { }
/// Recursively iterate over variadic template arguments
template <typename... Args> struct process_attributes {

View File

@ -519,9 +519,16 @@ public:
explicit operator type*() { return this->value; }
explicit operator type&() { return *(this->value); }
explicit operator holder_type&() { return holder; }
explicit operator holder_type*() { return &holder; }
// Workaround for Intel compiler bug
// see pybind11 issue 94
#if defined(__ICC) || defined(__INTEL_COMPILER)
operator holder_type&() { return holder; }
#else
explicit operator holder_type&() { return holder; }
#endif
static handle cast(const holder_type &src, return_value_policy policy, handle parent) {
return type_caster_generic::cast(
src.get(), policy, parent, &typeid(type), &copy_constructor, &src);