Я хочу объявить что-то вроде этого:
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
. Могу ли я что-то сделать, чтобы помочь компилятору понять это?