【发布时间】:2019-04-08 18:19:48
【问题描述】:
NVCC 编译器拒绝编译下面的代码(使用 .cu 扩展名),因为它不能很好地处理 Howard Hinnant 的日期库。 NVCC 正在调用 GCC 6.4.0。对于这个简单的例子,C++ 编译器本身完全没有问题。我该如何解决这个问题?
#include <iostream>
#include "date.h"
int main()
{
const auto time = std::chrono::system_clock::now();
const auto daypoint = date::floor<date::days>(time);
const auto ymd = date::year_month_day{daypoint};
std::cout << ymd.year() << std::endl;
return 0;
}
../include/date.h:162:27: error: ‘const intmax_t std::__ratio_multiply<std::ratio<24l>, std::ratio<3600l> >::__gcd1’ is private within this context
using days = std::chrono::duration
^~~~~~~~
/nfs/admin/hpc/sw/RedHatEnterpriseServer7/GCCcore/6.4.0/include/c++/6.4.0/ratio:289:32: note: declared private here
static const intmax_t __gcd1 =
^~~~~
【问题讨论】:
-
最新版本的库 (v3.0.0) 应该可以使用 NVCC github.com/HowardHinnant/date/pull/510成功编译