Comments (3)
Does this work on the c++ side? In principle it should as everything should live until the end of the statement. But in this case we create a temporary frame, from which we get a const &
to a collection on which we then call size
, so I am not entirely sure.
from podio.
Yes, on C++ there aren't any surprises and you can do everything in one line. But here frames[0]
not being alive before the line ends seems unexpected.
from podio.
C++ and Python have different rules for temporaries: C++ guarantees that the lifetime of temporaries is at least until the end of the statement; in Python, temporaries go away whenever the reference count returns to zero, which may be in the middle of a long statement. If a C++ method returns something by reference to data that lives in a temporary object (that came to be from a different function call, say, in the long statement), then that data may go away before the end of life of the reference.
cppyy tries to set "lifelines" from such references onto the object that holds the data by checking whether the reference points to somewhere within the object on which the method was called. This automatic system would fail if the reference is to something that is not part of the temporary, but is still controlled by that temporary. E.g. if the reference points into data that is held by pointer by the object.
from podio.
Related Issues (20)
- Trivial return types of generated get methods should be by value instead of const reference
- Switch to black for formatting python sources HOT 1
- how to retrieve the cell ID encoding from the metadata in the output ROOT file HOT 2
- RNTuple interface changed in ROOT HOT 1
- collection push_back and value_type incompatible with some std iterator adaptors HOT 1
- Inconsistent reference access for Mutable types
- Schema evolution script does not flag some evolutions as impossible
- Frame serialization/deserialization HOT 12
- Automatically ship collection level metadata
- GenericParameters should not return a default constructed / empty value if key is not present HOT 4
- Warnings when generating ROOT dictionaries HOT 1
- GenericParameters should be stored the same way for TTree and RNTuple backends HOT 6
- Leak in SIO Frame reading
- Document the cmake functionality HOT 4
- Use types of heterogeneous origins in interfaces HOT 3
- Document more advanced cmake usage
- Make it possible to store more version information of generated EDMs
- OneToOne relations are not preserved on `clone()` since v01-00 HOT 1
- graphviz needs to be in requirements.txt HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from podio.