Fixes for compilation/segfault problems with Intel (issue 94)
diff --git a/include/pybind11/attr.h b/include/pybind11/attr.h index 15d5982..8c77a41 100644 --- a/include/pybind11/attr.h +++ b/include/pybind11/attr.h
@@ -277,7 +277,7 @@ }; /// 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 {
diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h index 2dfcc77..b153d6e 100644 --- a/include/pybind11/cast.h +++ b/include/pybind11/cast.h
@@ -519,9 +519,16 @@ 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), ©_constructor, &src);