Community
cancel
Showing results for 
Search instead for 
Did you mean: 
rnickb
Beginner
62 Views

template substitution bug with default template arguments

The following code compiles fine with gcc and clang but gives an error with icc 2016.

#include <utility>                                                                 
                                                                                   
struct A {                                                                         
  using value_type = double;                                                       
};                                                                                 
                                                                                   
struct K {                                                                         
  template<class T, class V = typename T::value_type>                              
  auto require(T&& x) -> std::true_type;                                           
};                                                                                 
                                                                                   
template<                                                                          
    class X , class Y,                                                             
    typename R = decltype(std::declval<X>().template require<Y>(                   
        std::declval<Y>()))                                                        
    >                                                                              
constexpr bool g() {                                                               
  return R::value;                                                                 
}                                                                                  
                                                                                   
int main() {                                                                       
  g<K, A>();                                                                       
  return 0;                                                                        
} 

 

0 Kudos
1 Reply
62 Views

Thank you for reporting the issue to us.

I've reproduced the issue with 16.0 beta and v15.0 compiler. I'll file the issue to dev team.

Thanks,

Shenghong

Reply