CUDA でコンパイルできないtemplateクラス

テンプレートクラスの中で構造体を typedef すると
nvcc でコンパイルが通りません。

例えば以下のようなコード。

#include <iostream>
#include <stdio.h>
#include <vector>

using namespace std;

template<typename T>
class Base {
public:
    typedef struct {
        int start;
        int end;
    } Range;

    std::vector<Range> metaData;

    Base() {
        printf("created \n");
    }
};

int main() {
    Base<int> b;

    return 0;
}

これをコンパイルすると、以下のようなエラーになります。

ttt.cu:24: error: '__T10' was not declared in this scope
ttt.cu:24: error: '__T10' was not declared in this scope
ttt.cu:24: error: template argument 1 is invalid
ttt.cu:24: error: template argument 1 is invalid
ttt.cu:24: error: template argument 2 is invalid

typedef がうまくいかないようです。
nvcc 3.2 と 4.0 で確認しました。

対策としては.....
template クラスの外で typedef することくらいですかね。

2011/08/12 追記

よく考えたら "typedef" 自体がいらなかった。
typedef を外して無事通りました。