On Mon, 13 Mar 2017, John Peterson wrote:

On Mon, Mar 13, 2017 at 11:06 AM, Barna Becsek <[email protected]> wrote:

      I was able to overcome the problem with a little help from a
      friend.
      Basically what I did is replace “this->qrule->get_weights()”
      with “const_cast<const QBase *>(this->qrule)->get_weights()”
      and everything worked fine!
      I, however, still don’t understand why this would be
      necessary. In theory qrule already is a QBase pointer.


const_cast compiles down to literally no machine instructions IIRC.  This can't 
really have fixed the problem.

Technically this ought to cause the const get_weights() to get called
instead of the non-const, which would cause a const vector reference
to be returned instead of non-const... but then the vector reference
would have been cast to const regardless by the call to compute_map(),
so you're right in this case; no machine instructions in the end.

Maybe there was not problem in the first place, or maybe you have a
Heisenbug... the latter can sometimes be "fixed" with an innocuous
change like adding a print statement...

This looks a *lot* like the one-line-of-magic-garbage I had in one of
my applications when first starting out with libMesh.  I never found a
bug associated with it, but when I stopped using the Red Hat "gcc
2.96" fork the problem went away for good.
---
Roy
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to