http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55058



             Bug #: 55058

           Summary: [4.7/4.8 Regression] Unexpected invalid type

                    conversion error

    Classification: Unclassified

           Product: gcc

           Version: 4.7.3

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: c++

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: sebastian.hu...@embedded-brains.de





Created attachment 28518

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28518

Sample code



The attached test file produces with "g++ -c test.cc" of GCC version 4.7 (e.g.

the one shipped with OpenSuse 12.2) and 4.8 the following output:



test.cc: In constructor 'C_DrvDataBuffer::C_DrvDataBuffer(ushort, ushort)':

test.cc:20748:34: error: invalid conversion from 'const T_SND_NODE

C_DrvSndDataBlock::* {aka const list_node<C_DrvSndDataBlock, with_lock,

oper_safe> C_DrvSndDataBlock::*}' to 'list_node<C_DrvSndDataBlock, with_lock,

oper_safe> C_DrvSndDataBlock::*' [-fpermissive]

test.cc:16667:1: error:   initializing argument 1 of 'list_base<

<template-parameter-1-1>, <template-parameter-1-2>, test_,

amp_>::list_base(const T_C_NODE_ T_::*, const char*, bool) [with T_ =

C_DrvSndDataBlock; lock_ = with_lock; test_ = oper_safe; bool amp_ = false;

list_base< <template-parameter-1-1>, <template-parameter-1-2>, test_,

amp_>::T_C_NODE_ = list_node<C_DrvSndDataBlock, with_lock, oper_safe>]'

[-fpermissive]

test.cc:20748:34: error: invalid conversion from 'const T_SND_NODE

C_DrvSndDataBlock::* {aka const list_node<C_DrvSndDataBlock, with_lock,

oper_safe> C_DrvSndDataBlock::*}' to 'list_node<C_DrvSndDataBlock, with_lock,

oper_safe> C_DrvSndDataBlock::*' [-fpermissive]

test.cc:16667:1: error:   initializing argument 1 of 'list_base<

<template-parameter-1-1>, <template-parameter-1-2>, test_,

amp_>::list_base(const T_C_NODE_ T_::*, const char*, bool) [with T_ =

C_DrvSndDataBlock; lock_ = with_lock; test_ = oper_safe; bool amp_ = false;

list_base< <template-parameter-1-1>, <template-parameter-1-2>, test_,

amp_>::T_C_NODE_ = list_node<C_DrvSndDataBlock, with_lock, oper_safe>]'

[-fpermissive]

test.cc:20748:34: error: invalid conversion from 'const T_RCV_NODE

C_DrvRcvDataBlock::* {aka const list_node<C_DrvRcvDataBlock, with_lock,

oper_safe> C_DrvRcvDataBlock::*}' to 'list_node<C_DrvRcvDataBlock, with_lock,

oper_safe> C_DrvRcvDataBlock::*' [-fpermissive]

test.cc:16667:1: error:   initializing argument 1 of 'list_base<

<template-parameter-1-1>, <template-parameter-1-2>, test_,

amp_>::list_base(const T_C_NODE_ T_::*, const char*, bool) [with T_ =

C_DrvRcvDataBlock; lock_ = with_lock; test_ = oper_safe; bool amp_ = false;

list_base< <template-parameter-1-1>, <template-parameter-1-2>, test_,

amp_>::T_C_NODE_ = list_node<C_DrvRcvDataBlock, with_lock, oper_safe>]'

[-fpermissive]



The test code can be compiled with the Comeau-Online-Compiler:



http://www.comeaucomputing.com/tryitout



The GCC 4.6 works also.

Reply via email to