IDE Netbeans 7.2 gcc 4.5.3 gdb 7.3.50.20111026-cvs (cygwin-special) In the code below setDatumCell is passed X.getOperator() instead of *X.getOperator(); I am running under gdb and the generated code (from the gdb disassembler) is included. Both getData() and getOperator() are inline methods. The fact of an error iin expanding inline methods was reported previously under "Possible code generationi bug using virtual destructors" on 31 Aug 2012 16:15:59 -0700 (PDT). It has not been responded to which (to me) implies no interest and, presumably, my understanding of the issue is wildly incorrect and that I blundered in my coding. If this issue has a similar provenance perhaps someone can explain what I have done wrong. In this case I assume that a dereference means a dereference. Passing code without a dereference being done seems mildly incorrect. What have I misunderstood? I have checked the operation in gdb. X.getOperator() works correctly. At the source language level *(X.getOperator()) works correctly during Expression Evaluation in gdb. In setDatum(void* op), op contains the value of X.getOperator() and not *(X.getOperator()). Taking the body of the statement and not making it inline corrects the issue, to wit, *(X.getOperator() works correctly and the correct value is passed to setDatumCell(void* op). It looks as if in some cases using an implicit inline statement (a body and method definition in the header file) breaks the compiler. if this is accurate are there any guidelines? Will explicit inlines work correctly (inline <type> method();) or can inlines not be used? thanks art // statement in header file (SlipDatum.h) SlipDatum(SlipDatum& X) { *getData() = *getData(X); setDatumCell(*(X.getOperator())); }; // source code. getOperator() // doesn't dereference correctly gdb disassembly listing slip::SlipDatum::SlipDatum(slip::SlipDatum&)+0: push %ebp slip::SlipDatum::SlipDatum(slip::SlipDatum&)+1: mov %esp,%ebp slip::SlipDatum::SlipDatum(slip::SlipDatum&)+3: push %ebx slip::SlipDatum::SlipDatum(slip::SlipDatum&)+4: sub $0x14,%esp slip::SlipDatum::SlipDatum(slip::SlipDatum&)+7: mov 0x8(%ebp),%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+10: mov %eax,(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+13: call 0x461e30 <slip::SlipCell::SlipCell()> slip::SlipDatum::SlipDatum(slip::SlipDatum&)+18: mov 0x8(%ebp),%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+21: movl $0x474c28,(%eax) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+27: mov 0x8(%ebp),%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+30: mov %eax,(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+33: call 0x460a34 <slip::SlipCellBase::getData()> slip::SlipDatum::SlipDatum(slip::SlipDatum&)+38: mov %eax,%ebx slip::SlipDatum::SlipDatum(slip::SlipDatum&)+40: mov 0xc(%ebp),%eax SlipDatum(SlipDatum& X) { *getData() = *getData(X); setDatumCell(*(X.getOperator())); }; slip::SlipDatum::SlipDatum(slip::SlipDatum&)+43: mov %eax,(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+46: call 0x460a20 <slip::SlipCellBase::getData(slip::SlipCellBase&)> slip::SlipDatum::SlipDatum(slip::SlipDatum&)+51: mov 0x4(%eax),%edx slip::SlipDatum::SlipDatum(slip::SlipDatum&)+54: mov (%eax),%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+56: mov %eax,(%ebx) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+58: mov %edx,0x4(%ebx) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+61: mov 0xc(%ebp),%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+64: mov %eax,(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+67: call 0x4608a0 <slip::SlipCellBase::getOperator()> slip::SlipDatum::SlipDatum(slip::SlipDatum&)+72: mov %eax,0x4(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+76: mov 0x8(%ebp),%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+79: mov %eax,(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+82: call 0x462164 <slip::SlipDatum::setDatumCell(void*)> slip::SlipDatum::SlipDatum(slip::SlipDatum&)() slip::SlipDatum::SlipDatum(slip::SlipDatum&)+87: jmp 0x462334 <slip::SlipDatum::SlipDatum(slip::SlipDatum&)+112> slip::SlipDatum::SlipDatum(slip::SlipDatum&)+89: mov %eax,%ebx slip::SlipDatum::SlipDatum(slip::SlipDatum&)+91: mov 0x8(%ebp),%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+94: mov %eax,(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+97: call 0x461ea0 <slip::SlipCell::~SlipCell()> slip::SlipDatum::SlipDatum(slip::SlipDatum&)+102: mov %ebx,%eax slip::SlipDatum::SlipDatum(slip::SlipDatum&)+104: mov %eax,(%esp) slip::SlipDatum::SlipDatum(slip::SlipDatum&)+107: call 0x45f528 <_Unwind_Resume> slip::SlipDatum::SlipDatum(slip::SlipDatum&)+112: add $0x14,%esp slip::SlipDatum::SlipDatum(slip::SlipDatum&)+115: pop %ebx slip::SlipDatum::SlipDatum(slip::SlipDatum&)+116: pop %ebp slip::SlipDatum::SlipDatum(slip::SlipDatum&)+117: ret