2011-02-28 10 views
0

は、最新のブーストとうまく遊ぶC++、メンバーのアドレス

template<typename U>          \ 
    static false_type has_member(tester<&U::member_name>*); \ 

/opt/boost/include/boost/thread/locks.hpp:65: error: ‘&’ cannot appear in a constant-expression 
/opt/boost/include/boost/thread/locks.hpp:65: error: template argument 1 is invalid 

にそれを修正するためにどのように任意のアイデアを提供しますか?

+0

NVCC - つまり - CUDAコンパイラ、右? – CygnusX1

+0

@Cygnusはい.... – Anycorn

+1

CUDAの人が見つけやすくするために[cuda]タグを追加しました:)私の経験から、私は1.42のブーストで成功し、1.45のブーストでnvccのエラーが発生しました – CygnusX1

答えて

1

あなたはどのバージョンのnvccを使用していますか?

私は、次の単純な場合には、エラーを再現しようとしたが、それは(CUDA 3.2)のコンパイルで成功しました:

#include <stdio.h> 

class Test { 
public: 
    int x; 
}; 

template <int Test::*S> 
class Template { 
}; 

template <typename T> 
class Run { 
    Template<&T::x> foo; 
}; 

int main() { 
    Run<Test> foo; 
}