- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
icc 15.0.0 fails to compile the following
#include <utility> struct S { enum E {A,B}; // convert run-time variable e to a compile-time variable template<template<E> class F, typename... Args> static auto Switch(E e, Args&&... args) -> decltype(F<A>::act(std::forward<Args>(args)...)) { switch(e) { case A: return F<A>::act(std::forward<Args>(args)...); case B: return F<B>::act(std::forward<Args>(args)...); } } }; template<S::E> struct foo { static double act(double); }; double work(S::E e, double x) { return S::Switch<foo>(e,x); }
but fails with the error message "no instance of the function template "S::Switch" matches the argument list". This is obviously wrong.
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the test case. I can reproduce this error message with 15.0.2. This GNU compiler has no problem compiling this code. I'll update this thread with an internal tracking ID.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The internal tracking ID for this issue is DPD200366869.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I verified that this issue is fixed in the 16.0 Update 1 release, which will be available for download soon.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page