C++ 如何编译使用std::chrono和date的CUDA代码?

C++ 如何编译使用std::chrono和date的CUDA代码?,c++,datetime,c++14,chrono,C++,Datetime,C++14,Chrono,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 = da

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;
}
#包括
#包括“date.h”
int main()
{
const auto time=std::chrono::system_clock::now();
const auto daypoint=日期::楼层(时间);
const auto ymd=date::year\u month\u day{daypoint};

std::cout我唯一能推荐的是向Nvidia发送错误报告。下面是一个简化的测试用例:

#include <chrono>
#include <ratio>

using days = std::chrono::duration
    <int, std::ratio_multiply<std::ratio<24>, std::chrono::hours::period>>;

int main() {}
#包括
#包括
使用天数=标准::计时::持续时间
;
int main(){}

谢谢,如果这是一个bug,那么我的问题根本就不属于你。很抱歉责怪你的库!没问题。我很乐意帮你找到问题的症结所在。因为我没有访问NVCC编译器的权限,你能确认我简化的测试用例不能与NVCC编译器一起使用吗?我确认。这也不能编译:它是seems认为
ratio\u multiply
是错误的根源。嗨@HowardHinnant,我遇到了同样的问题,并且能够通过在
date/date.h
头文件中用显式值替换
std::ratio\u multiply
std::ratio\u divide
的实例化来解决这个问题。我想知道您是否感兴趣如果我为这个解决方案创建了一个PR,我会在合并中受到影响(如果答案是否定的,我完全理解,这是cuda的问题,不是日期库的问题,但如果库能够开箱即用,那就太好了)?将
::键入
比率的闭合角括号中是否有效?
使用days=std::chrono::duration;
库的最新版本(v3.0.0)应使用NVCC成功编译
#include <chrono>
#include <ratio>

using days = std::chrono::duration
    <int, std::ratio_multiply<std::ratio<24>, std::chrono::hours::period>>;

int main() {}