Commit 3af89f8b by Paolo Carlini Committed by Paolo Carlini

re PR c++/59705 (possible compiler bug regarding SFINAE (program compiles fine))

2014-05-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/59705
	* g++.dg/cpp0x/sfinae51.C: New.

	PR c++/58353
	* g++.dg/cpp0x/variadic157.C: New.

From-SVN: r210310
parent 6f8531af
2014-05-11 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59705
* g++.dg/cpp0x/sfinae51.C: New.
PR c++/58353
* g++.dg/cpp0x/variadic157.C: New.
2014-05-10 Oleg Endo <olegendo@gcc.gnu.org> 2014-05-10 Oleg Endo <olegendo@gcc.gnu.org>
PR target/51244 PR target/51244
......
// PR c++/59705
// { dg-do compile { target c++11 } }
struct HasIter {
typedef int * const_iterator;
};
struct NoIter {
};
template <typename T>
constexpr bool foo(const T &, typename T::const_iterator *)
{
return true;
}
template <typename T>
constexpr bool foo(const T &, ...)
{
return false;
}
HasIter has_iter;
NoIter no_iter;
static_assert (!foo(no_iter, 0), "");
static_assert (foo(has_iter, 0), "");
static_assert (foo<HasIter>(has_iter, 0), "");
// PR c++/58353
// { dg-do compile { target c++11 } }
template<class E, E V, int CNT>
struct seq_t
{
template<E... Es> struct seq{};
template<int N, E... Es>
struct gen : gen<N - 1, V, Es...>{};
template<E... Es>
struct gen<0, Es...> : seq<Es...>{};
struct bits_t{ E e[CNT]; };
template<E... Es>
static bits_t init(seq<Es...>) {return {{Es...}};}
static bits_t init() {return init(gen<CNT>{});}
};
typedef seq_t<int, 123, 5> wow;
int main()
{
wow::init();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment