1. 14 Dec, 2016 3 commits
    • Jason Rhinelander's avatar
      Remove useless `convert` argument from argument_loader · 12ce07a2
      Jason Rhinelander authored
      Since the argument loader split off from the tuple converter, it is
      never called with a `convert` argument set to anything but true.  This
      removes the argument entirely, passing a literal `true` from within
      `argument_loader` to the individual value casters.
      12ce07a2
    • Jason Rhinelander's avatar
      Work around gcc 7 ICE · 23e59c86
      Jason Rhinelander authored
      Current g++ 7 snapshot fails to compile pybind under -std=c++17 with:
      
      ```
      $ make
      [  3%] Building CXX object tests/CMakeFiles/pybind11_tests.dir/pybind11_tests.cpp.o
      In file included from /home/jagerman/src/pybind11/tests/pybind11_tests.h:2:0,
                       from /home/jagerman/src/pybind11/tests/pybind11_tests.cpp:10:
      /home/jagerman/src/pybind11/include/pybind11/pybind11.h: In instantiation of 'pybind11::cpp_function::initialize(Func&&, Return (*)(Args ...), const Extra& ...)::<lambda(pybind11::detail::function_record*, pybind11::handle, pybind11::handle, pybind11::handle)> [with Func = pybind11::cpp_function::cpp_function(Return (Class::*)(Arg ...), const Extra& ...) [with Return = int; Class = ConstructorStats; Arg = {}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling}]::<lambda(ConstructorStats*)>; Return = int; Args = {ConstructorStats*}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling}]':
      /home/jagerman/src/pybind11/include/pybind11/pybind11.h:120:22:   required from 'struct pybind11::cpp_function::initialize(Func&&, Return (*)(Args ...), const Extra& ...) [with Func = pybind11::cpp_function::cpp_function(Return (Class::*)(Arg ...), const Extra& ...) [with Return = int; Class = ConstructorStats; Arg = {}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling}]::<lambda(ConstructorStats*)>; Return = int; Args = {ConstructorStats*}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling}]::<lambda(struct pybind11::detail::function_record*, class pybind11::handle, class pybind11::handle, class pybind11::handle)>'
      /home/jagerman/src/pybind11/include/pybind11/pybind11.h:120:19:   required from 'void pybind11::cpp_function::initialize(Func&&, Return (*)(Args ...), const Extra& ...) [with Func = pybind11::cpp_function::cpp_function(Return (Class::*)(Arg ...), const Extra& ...) [with Return = int; Class = ConstructorStats; Arg = {}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling}]::<lambda(ConstructorStats*)>; Return = int; Args = {ConstructorStats*}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling}]'
      /home/jagerman/src/pybind11/include/pybind11/pybind11.h:62:9:   required from 'pybind11::cpp_function::cpp_function(Return (Class::*)(Arg ...), const Extra& ...) [with Return = int; Class = ConstructorStats; Arg = {}; Extra = {pybind11::name, pybind11::is_method, pybind11::sibling}]'
      /home/jagerman/src/pybind11/include/pybind11/pybind11.h:984:22:   required from 'pybind11::class_<type_, options>& pybind11::class_<type_, options>::def(const char*, Func&&, const Extra& ...) [with Func = int (ConstructorStats::*)(); Extra = {}; type_ = ConstructorStats; options = {}]'
      /home/jagerman/src/pybind11/tests/pybind11_tests.cpp:24:47:   required from here
      /home/jagerman/src/pybind11/include/pybind11/pybind11.h:147:9: sorry, unimplemented: unexpected AST of kind cleanup_stmt
               };
               ^
      /home/jagerman/src/pybind11/include/pybind11/pybind11.h:147:9: internal compiler error: in potential_constant_expression_1, at cp/constexpr.c:5593
      0x84c52a potential_constant_expression_1
      	../../src/gcc/cp/constexpr.c:5593
      0x84c3c0 potential_constant_expression_1
      	../../src/gcc/cp/constexpr.c:5154
      0x645511 finish_function(int)
      	../../src/gcc/cp/decl.c:15527
      0x66e80b instantiate_decl(tree_node*, int, bool)
      	../../src/gcc/cp/pt.c:22558
      0x6b61e2 instantiate_class_template_1
      	../../src/gcc/cp/pt.c:10444
      0x6b61e2 instantiate_class_template(tree_node*)
      	../../src/gcc/cp/pt.c:10514
      0x75a676 complete_type(tree_node*)
      	../../src/gcc/cp/typeck.c:133
      0x67d5a4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
      	../../src/gcc/cp/pt.c:17516
      0x67ca19 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
      	../../src/gcc/cp/pt.c:16655
      0x672cce tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
      	../../src/gcc/cp/pt.c:16140
      0x6713dc tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
      	../../src/gcc/cp/pt.c:15408
      0x671915 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
      	../../src/gcc/cp/pt.c:15394
      0x671fc0 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
      	../../src/gcc/cp/pt.c:15618
      0x66e97f tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
      	../../src/gcc/cp/pt.c:15379
      0x66e97f instantiate_decl(tree_node*, int, bool)
      	../../src/gcc/cp/pt.c:22536
      0x6ba0cb instantiate_pending_templates(int)
      	../../src/gcc/cp/pt.c:22653
      0x6fd7f8 c_parse_final_cleanups()
      	../../src/gcc/cp/decl2.c:4512
      ```
      
      which looks a lot like https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77545.
      
      The error seems to be that it gets confused about the `std::tuple<...>
      value` in argument_loader: it is apparently not being initialized
      properly.  Adding a default constructor with an explicit
      default-initialization of `value` works around the problem.
      23e59c86
    • Jason Rhinelander's avatar
      Silence warnings from eigen under g++ 7 · cb637709
      Jason Rhinelander authored
      -Wint-in-bool-context triggers many warnings when compiling eigen code,
      so disable it locally in eigen.h.
      cb637709
  2. 13 Dec, 2016 5 commits
  3. 12 Dec, 2016 4 commits
  4. 11 Dec, 2016 1 commit
  5. 09 Dec, 2016 1 commit
  6. 08 Dec, 2016 1 commit
  7. 07 Dec, 2016 2 commits
    • Jason Rhinelander's avatar
      std::valarray support for stl.h (#545) · ae185b7f
      Jason Rhinelander authored
      * Added ternary support with descr args
      
      Current the `_<bool>(a, b)` ternary support only works for `char[]` `a`
      and `b`; this commit allows it to work for `descr` `a` and `b` arguments
      as well.
      
      * Add support for std::valarray to stl.h
      
      This abstracts the std::array into a `array_caster` which can then be
      used with either std::array or std::valarray, the main difference being
      that std::valarray is resizable.  (It also lets the array_caster be
      potentially used for other std::array-like interfaces, much as the
      list_caster and map_caster currently provide).
      
      * Small stl.h cleanups
      
      - Remove redundant `type` typedefs
      - make internal list_caster methods private
      ae185b7f
    • Dean Moldovan's avatar
  8. 03 Dec, 2016 3 commits
    • Dean Moldovan's avatar
      Use C++14 index_sequence when possible · 8c85a857
      Dean Moldovan authored
      Newer standard libraries use compiler intrinsics for std::index_sequence
      which makes it ‘free’. This prevents hitting instantiation limits for
      recursive templates (-ftemplate-depth).
      8c85a857
    • Dean Moldovan's avatar
      Accept any sequence type as std::tuple or std::pair · 107285b3
      Dean Moldovan authored
      This is more Pythonic and compliments the std::vector and std::list
      casters which also accept sequences.
      107285b3
    • Dean Moldovan's avatar
      Split up tuple caster and function argument loader · 719c1733
      Dean Moldovan authored
      This is needed in order to allow the tuple caster to accept any sequence
      while keeping the argument loader fast. There is also very little overlap
      between the two classes which makes the separation clean. It’s also good
      practice not to have completely new functionality in a specialization.
      719c1733
  9. 01 Dec, 2016 2 commits
  10. 25 Nov, 2016 3 commits
  11. 24 Nov, 2016 4 commits
  12. 22 Nov, 2016 5 commits
  13. 20 Nov, 2016 6 commits