- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
The following code doesn't compile with icpc 15.0.0.090 Build 20140723, with -std=c++11.
#include <cstdlib>
#include <typeinfo>
#include <iostream>
#include <type_traits>struct A {
double** m;
};struct B {
double* m;
};template<class T, typename std::enable_if<std::is_pointer<T>::value>::type* = nullptr>
static inline void foo(T* const& pt) {
std::cout << "bar 1" << std::endl;
}
template<class T, typename std::enable_if<!std::is_pointer<T>::value>::type* = nullptr>
static inline void foo(T* const& pt) {
std::cout << "bar 2" << std::endl;
}int main() {
A a;
foo(a.m);
B b;
foo(b.m);
}
On the other hand, with g++ and clang++, I get the expected output:
bar 1
bar 2
Thank you in advance for looking into this.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi there,
I reproduced the problem. And I'm entering it to our problem-tracking database.
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Engineering team is looking into this issue. Meanwhile, they provided a temporary workaround for you. See the code snippet below.
//template<class T, typename std::enable_if<std::is_pointer<T>::value>::type* = nullptr> template<class T, typename std::enable_if<std::is_pointer<T>::value>::type* = (void*)0> static inline void foo(T* const& pt) { std::cout << "bar 1" << std::endl; } //template<class T, typename std::enable_if<!std::is_pointer<T>::value>::type* = nullptr> template<class T, typename std::enable_if<!std::is_pointer<T>::value>::type* = (void*)0> static inline void foo(T* const& pt) { std::cout << "bar 2" << std::endl; }
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thank you for the workaround.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This still doesn't compile properly with icpc 15.0.2.132.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page