Filed as http://llvm.org/bugs/show_bug.cgi?id=18009 - thanks very much!

JDO

On Nov 19, 2013, at 3:18 PM, Richard Smith <[email protected]> wrote:

> Reduced testcase:
> 
> template<int A> struct outer {
>   template<int B, int C> struct inner {};
>   template<int C> struct inner<A * 2, C> {};
> };
> 
> Yes, this is valid code. Please file a bug!
> 
> You can work around this by hiding the non-type template argument in a type 
> template argument:
> 
> template<int N> struct Int { static const int value = N; };
> 
> template<int A> struct outer {
>   template<typename B, int C> struct inner {}; 
>   template<int C> struct inner<Int<A * 2>, C> {};
> };
> 
> 
> On Tue, Nov 19, 2013 at 8:31 AM, John Owens <[email protected]> wrote:
> Thanks John, and thanks to Don Hinton who had an offline suggestion to use 
> default values for template parameters. We’re happy to take any suggestions 
> we can / inspire clang toward handling a few more cases!
> 
> JDO
> 
> On Nov 19, 2013, at 8:25 AM, Fletcher, John P <[email protected]> 
> wrote:
> 
> > John
> >
> > I am copying this to the developers list which has a much higher traffic 
> > and where they are interested in things wrong with clang.
> >
> > John Fletcher
> >
> > -----Original Message-----
> > From: [email protected] [mailto:[email protected]] 
> > On Behalf Of John Owens
> > Sent: 15 November 2013 22:23
> > To: [email protected]
> > Subject: [cfe-users] error: non-type template argument depends on a 
> > template parameter of the partial specialization
> >
> > Greetings!
> >
> > We're about to release a graph library for GPUs. The library compiles fine 
> > on, well, everything except clang (I'm using OS X), and it's because clang 
> > does not support the same template feature set as other compilers. ("error: 
> > non-type template argument depends on a template parameter of the partial 
> > specialization")
> >
> > Here's the issue and the reply from Duane Merrill at NVIDIA:
> >
> > https://github.com/gunrock/gunrock/issues/1
> >
> > (I'll append a short version of it below.)
> >
> > What I'd love to know is "is this something that clang will support in the 
> > near future / is there an easy clang workaround". If neither is true, 
> > perhaps we do some refactoring, per Duane's suggestion. But if either is 
> > true, that would ease our support issues.
> >
> > JDO
> >
> >
> > load_tile.cuh:207:
> >
> >        template <int LOAD, int dummy>
> >        struct Iterate<LOAD, LOAD_VEC_SIZE, dummy>
> >
> > The error I'm getting is:
> >
> > ../../gunrock/util/io/load_tile.cuh:207:23: error: non-type template 
> > argument
> >      depends on a template parameter of the partial specialization 
> > _______________________________________________
> > cfe-users mailing list
> > [email protected]
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users
> >
> >
> 
> 
> _______________________________________________
> cfe-dev mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> 


_______________________________________________
cfe-users mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users

Reply via email to