2011-02-28 41 views
0

我試圖讓NVCC(G ++/EDG)與最新的增強發揮很好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 yes .... – Anycorn

+1

添加了[cuda]標籤,使CUDA傢伙更容易找到它:)根據我的經驗:我成功升級1.42,並且nvcc錯誤與boost 1.45 – 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; 
}