1. 12 Sep, 2017 1 commit
    • Dean Moldovan's avatar
      Make TypeErrors more informative when an optional header is missing · 2b4477eb
      Dean Moldovan authored
      E.g. trying to convert a `list` to a `std::vector<int>` without
      including <pybind11/stl.h> will now raise an error with a note that
      suggests checking the headers.
      
      The note is only appended if `std::` is found in the function
      signature. This should only be the case when a header is missing.
      E.g. when stl.h is included, the signature would contain `List[int]`
      instead of `std::vector<int>` while using stl_bind.h would produce
      something like `MyVector`. Similarly for `std::map`/`Dict`, `complex`,
      `std::function`/`Callable`, etc.
      
      There's a possibility for false positives, but it's pretty low.
      2b4477eb
  2. 10 Sep, 2017 3 commits
  3. 08 Sep, 2017 1 commit
  4. 06 Sep, 2017 2 commits
  5. 31 Aug, 2017 2 commits
  6. 30 Aug, 2017 3 commits
  7. 28 Aug, 2017 1 commit
  8. 25 Aug, 2017 1 commit
  9. 23 Aug, 2017 2 commits
  10. 20 Aug, 2017 2 commits
  11. 07 Apr, 2017 1 commit
  12. 22 Mar, 2017 3 commits
  13. 06 Jan, 2017 1 commit
  14. 04 Jan, 2017 1 commit
  15. 01 Jan, 2017 1 commit
  16. 26 Dec, 2016 1 commit
  17. 23 Dec, 2016 2 commits
  18. 17 Nov, 2016 1 commit
    • Dean Moldovan's avatar
      Add default and converting constructors for all concrete Python types · e18bc02f
      Dean Moldovan authored
      * Deprecate the `py::object::str()` member function since `py::str(obj)`
        is now equivalent and preferred
      
      * Make `py::repr()` a free function
      
      * Make sure obj.cast<T>() works as expected when T is a Python type
      
      `obj.cast<T>()` should be the same as `T(obj)`, i.e. it should convert
      the given object to a different Python type. However, `obj.cast<T>()`
      usually calls `type_caster::load()` which only checks the type without
      doing any actual conversion. That causes a very unexpected `cast_error`.
      This commit makes it so that `obj.cast<T>()` and `T(obj)` are the same
      when T is a Python type.
      
      * Simplify pytypes converting constructor implementation
      
      It's not necessary to maintain a full set of converting constructors
      and assignment operators + const& and &&. A single converting const&
      constructor will work and there is no impact on binary size. On the
      other hand, the conversion functions can be significantly simplified.
      e18bc02f
  19. 03 Nov, 2016 1 commit
    • Ivan Smirnov's avatar
      std::experimental::optional (#475) · 44a69f78
      Ivan Smirnov authored
      * Add type caster for std::experimental::optional
      
      * Add tests for std::experimental::optional
      
      * Support both <optional> / <experimental/optional>
      
      * Mention std{::experimental,}::optional in the docs
      44a69f78
  20. 01 Nov, 2016 1 commit
    • Dean Moldovan's avatar
      Make reference(_internal) the default return value policy for properties (#473) · 03f627eb
      Dean Moldovan authored
      * Make reference(_internal) the default return value policy for properties
      
      Before this, all `def_property*` functions used `automatic` as their
      default return value policy. This commit makes it so that:
      
       * Non-static properties use `reference_interal` by default, thus
         matching `def_readonly` and `def_readwrite`.
      
       * Static properties use `reference` by default, thus matching
         `def_readonly_static` and `def_readwrite_static`.
      
      In case `cpp_function` is passed to any `def_property*`, its policy will
      be used instead of any defaults. User-defined arguments in `extras`
      still have top priority and will override both the default policies and
      the ones from `cpp_function`.
      
      Resolves #436.
      
      * Almost always use return_value_policy::move for rvalues
      
      For functions which return rvalues or rvalue references, the only viable
      return value policies are `copy` and `move`. `reference(_internal)` and
      `take_ownership` would take the address of a temporary which is always
      an error.
      
      This commit prevents possible user errors by overriding the bad rvalue
      policies with `move`. Besides `move`, only `copy` is allowed, and only
      if it's explicitly selected by the user.
      
      This is also a necessary safety feature to support the new default
      return value policies for properties: `reference(_internal)`.
      03f627eb
  21. 20 Oct, 2016 1 commit
    • Dean Moldovan's avatar
      Support std::shared_ptr holder type out of the box · 5d28dd11
      Dean Moldovan authored
      With this there is no more need for manual user declarations like
      `PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)`. Existing ones
      will still compile without error -- they will just be ignored silently.
      
      Resolves #446.
      5d28dd11
  22. 23 Sep, 2016 1 commit
  23. 06 Sep, 2016 1 commit
  24. 24 Aug, 2016 1 commit
  25. 14 Aug, 2016 1 commit
  26. 13 Aug, 2016 1 commit
  27. 12 Jul, 2016 1 commit
  28. 11 Jul, 2016 2 commits