#include <types.h>

A SFINAE trait to mark classes that need special alignment.
This is required to make std::make_shared and etc respect alignment, which is essential for the Python wrappers to work properly.
When a GTSAM type is not declared with the type alias _eigen_aligned_allocator_trait = void, the first template will be taken so needs_eigen_aligned_allocator will be resolved to std::false_type.
Otherwise, it will resolve to the second template, which will be resolved to std::true_type.
Please refer to gtsam/base/make_shared.h for an example.