0

nvcc (g++/EDG) を最新のブーストでうまく再生させようとしています

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

与える

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

それを修正する方法はありますか?

4

1 に答える 1

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;
}
于 2011-03-01T21:43:55.357 に答える