Program Listing for File tags.hpp
↰ Return to documentation for file (/tmp/ws/src/proxsuite/include/proxsuite/linalg/veg/type_traits/tags.hpp
)
#ifndef VEG_TAGS_HPP_FYDE7Q6ZS
#define VEG_TAGS_HPP_FYDE7Q6ZS
#include "proxsuite/linalg/veg/type_traits/core.hpp"
#include "proxsuite/linalg/veg/internal/prologue.hpp"
namespace proxsuite {
namespace linalg {
namespace veg {
inline namespace tags {
VEG_TAG_TEMPLATE(typename T, tag, Tag, T);
VEG_TAG(as_ref, AsRef);
VEG_TAG(as_mut, AsMut);
VEG_TAG(from, From);
VEG_TAG(from_i, FromI);
VEG_TAG(as_ref_once, AsRefOnce);
VEG_TAG(from_alloc, FromAlloc);
VEG_TAG(from_alloc_and_value, FromAllocAndValue);
VEG_TAG(from_slice, FromSlice);
VEG_TAG(from_slice_mut, FromSliceMut);
template<typename Tag>
struct InPlace
{
InPlace() = default;
};
template<>
struct InPlace<void>
{
InPlace() = default;
template<typename Tag>
VEG_INLINE constexpr auto operator[](Tag /*tag*/) const noexcept
-> InPlace<Tag>
{
return InPlace<Tag>{};
}
};
VEG_INLINE_VAR(inplace, InPlace<void>);
} // namespace tags
} // namespace veg
} // namespace linalg
} // namespace proxsuite
#include "proxsuite/linalg/veg/internal/epilogue.hpp"
#endif /* end of include guard VEG_TAGS_HPP_FYDE7Q6ZS */