C++,会员地址

发布于 2024-10-19 22:03:07 字数 448 浏览 1 评论 0原文

我正在尝试让 nvcc (g++/EDG) 与最新的 boost 配合良好,

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

知道如何修复它吗?

I am trying to make nvcc (g++/EDG) play nicely with latest boost

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

gives

/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

any idea how to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜深人未静 2024-10-26 22:03:07

您使用什么版本的 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;
}

What version of nvcc are you using?

I tried reproducing the error in the following simpler case, but it succeeded with compilation (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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文