1

このテンプレートの最新の cygwin (1.7.24 64 ビット、GCC 4.8.1-3 64 ビット) コンパイラに問題があります。

template <typename _T, int _N>
vector<_T> makeVector(const _T(&data)[_N]) {
    return vector<_T> (data, data + _N);
}

コンパイラは次のように述べています。

error: expected '>' before numeric constant

しかし、私は過去に TDM-GCC を使用した Windows と学校のテスト Linux でビルドしたため、有効なコードであると確信しています。

これを解決する方法を知っている場合は、お知らせください。ありがとうございます。

4

2 に答える 2

1

Cygwin または Cygwin を実行するシステムがないため、問題を再現できない可能性があります。上記のコードを次のように置き換えてみます

#include <vector>
template <typename T, std::size_t N>
std::vector<T> makeVector(T (&array)[N]) {
    return std::vector<T>(array, array + N);
}

...そして、問題が解決しないかどうかを確認してください。ところで、コメントで参照されているコードは私のためにコンパイルされます(まあ、ソースファイルでは必要なく、ヘッダーでのみ必要なインクルードガードを削除する必要がありました)。

于 2013-08-25T00:40:11.103 に答える