make implicit conversions non-reentrant (fixes #1035) (#1037)

This commit is contained in:
Wenzel Jakob
2017-08-28 16:34:06 +02:00
committed by GitHub
parent 15f36d2b2d
commit 8ed5b8ab55
4 changed files with 34 additions and 0 deletions

View File

@@ -291,6 +291,17 @@ TEST_SUBMODULE(class_, m) {
.def(py::init<int, const std::string &>())
.def_readwrite("field1", &BraceInitialization::field1)
.def_readwrite("field2", &BraceInitialization::field2);
// test_reentrant_implicit_conversion_failure
// #1035: issue with runaway reentrant implicit conversion
struct BogusImplicitConversion {
BogusImplicitConversion(const BogusImplicitConversion &) { }
};
py::class_<BogusImplicitConversion>(m, "BogusImplicitConversion")
.def(py::init<const BogusImplicitConversion &>());
py::implicitly_convertible<int, BogusImplicitConversion>();
}
template <int N> class BreaksBase { public: virtual ~BreaksBase() = default; };