re PR c++/56611 ([C++11] Template instantiation failure with variadic arguments and template aliases)
2013-03-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/56611 * g++.dg/cpp0x/alias-decl-32.C: New. From-SVN: r196631
This commit is contained in:
parent
8a38ebb653
commit
15ff4345c4
2 changed files with 30 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2013-03-13 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/56611
|
||||
* g++.dg/cpp0x/alias-decl-32.C: New.
|
||||
|
||||
2013-03-11 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
PR middle-end/56571
|
||||
|
|
25
gcc/testsuite/g++.dg/cpp0x/alias-decl-32.C
Normal file
25
gcc/testsuite/g++.dg/cpp0x/alias-decl-32.C
Normal file
|
@ -0,0 +1,25 @@
|
|||
// PR c++/56611
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template<class T> struct remove_reference { typedef T type; };
|
||||
template<class T> struct remove_reference<T&> { typedef T type; };
|
||||
template<class T> T declval() { return T(); }
|
||||
|
||||
int f(int, int){return 0;}
|
||||
struct Func{};
|
||||
|
||||
template<class... Args> struct result1
|
||||
{
|
||||
typedef decltype(f(declval<typename remove_reference<Args>::type>()...)) type;
|
||||
};
|
||||
|
||||
template<class... Args> using result2
|
||||
= decltype(f(declval<typename remove_reference<Args>::type>()...));
|
||||
|
||||
template<class Sig> struct R;
|
||||
template<class This, class... Args> struct R< This(Args...) >
|
||||
{
|
||||
typedef result2<Args...> type;
|
||||
};
|
||||
|
||||
typedef R< Func(int, int) >::type R_type;
|
Loading…
Add table
Reference in a new issue