3

std::array次の 2 つのテンプレート パラメータを使用します。

typename T // the element type
size_t N // the size of the array

std::array をパラメーターとして受け取る関数を定義したいのですが、この場合は特定の T に対してのみですcharが、任意のサイズの配列に対してのみです。

以下は不正な形式です。

void f(array<char, size_t N> x) // ???
{
    cout << N;
}

int main()
{
    array<char, 42> A;

    f(A); // should print 42

    array<int, 42> B;

    f(B); // should not compile
}

これはどう書くのが正しいのでしょうか?

4

2 に答える 2

6

テンプレート関数を使用します。

template<size_t N> void f(array<char, N> x) {
}
于 2012-11-25T00:57:45.790 に答える
2

N静的な値である必要があります。たとえば、テンプレート引数を作成できます。

template <std::size_t N>
void f(std::array<char, N> x) {
    ...
}

あなたの例では、私はまだ参照によって引数を渡します:

template <std::size_t N>
void f(std::array<char, N> const& x) {
    ...
}
于 2012-11-25T00:59:27.410 に答える