Replace SFINAE with concepts (#5361)

Concepts are cleaner to use and result in much better error messages for incorrect template use.
This commit is contained in:
Tyler Veness
2023-06-07 09:50:09 -07:00
committed by GitHub
parent d57d1a4598
commit 91cbcea841
42 changed files with 397 additions and 361 deletions

View File

@@ -4,9 +4,8 @@
#pragma once
#include <type_traits>
#include <fmt/format.h>
#include <wpi/concepts.h>
#include "Eigen/Core"
#include "Eigen/SparseCore"
@@ -16,12 +15,9 @@
* Eigen::SparseCompressedBase<Derived>.
*/
template <typename Derived, typename CharT>
struct fmt::formatter<
Derived, CharT,
std::enable_if_t<
std::is_base_of_v<Eigen::MatrixBase<Derived>, Derived> ||
std::is_base_of_v<Eigen::SparseCompressedBase<Derived>, Derived>,
void>> {
requires std::derived_from<Derived, Eigen::MatrixBase<Derived>> ||
std::derived_from<Derived, Eigen::SparseCompressedBase<Derived>>
struct fmt::formatter<Derived, CharT> {
constexpr auto parse(fmt::format_parse_context& ctx) {
return m_underlying.parse(ctx);
}