|
Boost Users : |
Subject: Re: [Boost-users] boost/type_traits/has_new_operator.hpp and NVCC
From: Denis Taniguchi (taniguchi_at_[hidden])
Date: 2010-03-29 10:49:32
On Sat, 2010-03-27 at 16:53 +0100, joel falcou wrote:
> Denis Taniguchi wrote:
> > Hi all,
> >
> > I'm trying to compile boost::numeric::ublas with NVCC and I get the
> > following errors:
> >
> > /usr/local/include/boost/type_traits/has_new_operator.hpp:28: error: `&'
> > cannot appear in a constant-expression
> > /usr/local/include/boost/type_traits/has_new_operator.hpp:28: error:
> > template argument 2 is invalid
> >
> > This is related to #3919 and #3980 in a effort to make NVCC work with
> > boost.
> > Is there a known workaround so that I could tweak
> > boost/config/compiler/nvcc.hpp?
> > I'm using trunk under linux with the following piece of code:
> >
> I will give it a look monday when I have acces to our GPU machine.
> I think it's related to nvcc support for template, especially SFINAE.
>
Looks like it's treating SFINAE correctly, at least for release 3.0 of
NVCC (code from Wikipedia):
#include <iostream>
struct Test
{
typedef int Type;
};
template < typename T >
void f(typename T::Type) // definition #1
{
std::cerr << "definition #1" << std::endl;
}
template < typename T >
void f(T) // definition #2
{
std::cerr << "definition #2" << std::endl;
}
int main()
{
f<Test>(10); // call #1
f<int>(10); // call #2 without error thanks to SFINAE
return 0;
}
Returns:
definition #1
definition #2
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net