Я пытаюсь создать класс, который можно создать с помощью типа или массива.Я не уверен, что шаблоны - лучший способ сделать это, но я думал, что они могут работать.В приведенном ниже примере кода у меня есть класс, у которого есть два статических метода, которые оба возвращают экземпляр класса на основе заданного им шаблона:
template<class T>
template<class A, size_t N>
class Foo {
static A[N] bar();
static T bar();
}
template<class A, size_t N>
Foo<A[N]> Foo<A[N]>::bar();
template<class T>
Foo<T> Foo<T>::bar();
Так что я могу вызвать их так:
Foo<int[5]> intarrthing Foo<int[5]>::bar();
Foo<int> intthing Foo<int>::bar();
Это не работает, потому что не все шаблоны используются, так как я могу реализовать что-то подобное?