6

私はこのようなものを宣言したい:

template <typename T>
constexpr enable_if_t<is_integral_v<T>, int[]> foo = { 1, 2 };

template <typename T>
constexpr enable_if_t<is_floating_point_v<T>, int[]> foo = { 10, 20, 30 };

しかし、しようとすると、このエラーが発生します:

エラー:template<class T> constexpr std::enable_if_t<std::is_floating_point<_Tp>::value, int []> foo
注の再宣言: 以前の宣言template<class T> constexpr std::enable_if_t<std::is_integral<_Tp>::value, int []> foo<T>

foo特定のテンプレート引数に対して複数の定義が定義されることは決してないため、これは合法であるべきだと思います。コンパイラがこれを理解できるようにするためにできることはありますか?

4

1 に答える 1