C ++: Как использовать тип в функции шаблона для перехода?

Я не очень разбираюсь в шаблонах. Как мне написать шаблонную функцию с именем get, которая выбирает массив, из которого она получает, на основе типа шаблона? См. Пример ниже:

struct Foo
{
    int iArr[10];
    char cArr[10];

    // How to pick array here based on template type?
    template < typename T >
    T get( int idx )
    {
        // This does NOT work!
        switch ( T )
        {
        case int:
            return iArr[ idx ];
        case char:
            return cArr[ idx ];
        }
    }
};

// Expected behaviour of get()
Foo foo;
int i  = foo.get< int >( 2 );
char c = foo.get< char >( 4 );
9
задан Ashwin Nanjappa 23 June 2011 в 02:17
поделиться