Closed KABoissonneault closed 4 years ago
All QVM headers (that aren't in the detail
directory) are designed to not cause compilation errors if included on their own (e.g. if they're the first #include
in a compilation unit). This does not mean that you can instantiate every single template they define; this may require including additional headers, as is the case here. Consider that the call to assign
is not qualified, which means that depending on the types used, a different overload may be needed -- and the correct overload may require including a user header.
In this case:
If you want to minimize your header dependencies, you should #include <boost/qvm/mat_operations3.hpp>
(which won't introduce 2D or 4D overloads): https://gcc.godbolt.org/z/8Ed9j3.
If you don't care about header dependencies, you can just #include <boost/qvm/all.hpp>
.
If
boost::qvm::transposed
is used on its own, we get a compilation error.The result is
(URL for convenience: https://gcc.godbolt.org/z/7918sb)
boost/qvm/detail/transp_impl.hpp should probably include boost/qvm/detail/mat_assign.hpp, the same way mat_operations.hpp does for
identity_mat_