[Bug c++/42447] [C++0x] ICE during processing complex templates
piotr dot wyderski at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Dec 21 17:39:00 GMT 2009
------- Comment #11 from piotr dot wyderski at gmail dot com 2009-12-21 17:38 -------
An even more reduced testcase which ICEs. Delta is amazing...
I think I'll stop here.
// ------------------------8<----------------
namespace std
class tuple<>
{
};
template<std::size_t __i, typename... _Elements>
get(tuple<_Elements...>& __t)
{
}
template <class _OutputIterator, class _Tp>
class unique_ptr
{
};
template<typename _Tp, typename _Tp_Deleter>
class unique_ptr<_Tp[], _Tp_Deleter>
{
typedef std::tuple<_Tp*, _Tp_Deleter> __tuple_type;
get() const
{ return std::get<0>(_M_t); }
__tuple_type _M_t;
};
namespace base {
struct release_deleter {
};
template <typename T> class dynamic_dispatch;
template <
typename TC,
typename TR,
typename TD,
typename... TA
> class dynamic_dispatch<TR (TC::*)(TD&, TA...)> {
struct entry {
};
typedef std::unique_ptr<entry[], release_deleter> entry_ptr;
entry_ptr m_Start;
template <typename UC, typename UD> void attach_handler(TR
(UC::*m)(UD&, TA...));
};
template <
typename TC,
typename TR,
typename TD,
typename... TA
> template <
typename UC,
typename UD
> void dynamic_dispatch<TR (TC::*)(TD&, TA...)>::attach_handler(TR
(UC::*m)(UD&, TA...)) {
entry* p = m_Cursor;
if (p != m_Start.get()) {
} while(--p != m_Start.get());
}
class __attribute__((dllexport)) request {
};
template <std::size_t N_CHID> class read_request : public read_request_base
{
};
template <typename TC> class request_dispatcher
: private base::dynamic_dispatch<void (TC::*)(request&)> {
request_dispatcher();
};
class __attribute__((dllexport)) file_reader : public physical_device {
void execute_command(read_request<0>& req);
};
template <> request_dispatcher<file_reader>::request_dispatcher()
: super(&file_reader::report_unsupported_request) {
attach_handler(&file_reader::execute_command);
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42447
More information about the Gcc-bugs
mailing list