[ https://issues.apache.org/jira/browse/IGNITE-1443?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15694014#comment-15694014 ]
Igor Sapego commented on IGNITE-1443: ------------------------------------- Vladimir, Here is my approach: I've added special class {{ignite::Reference}} which can hold any kind of user reference. It can be used like that: {code} // Function that takes ignite::Reference as an argument. void foo(ignite::Reference<SomeType> ref); ... // User passes reference of their object like that: SomeType obj1; // Passing simple reference. foo(ignite::PassReference(obj1); // Passing object copy. foo(ignite::PassCopy(obj1); SomeType* obj2 = new SomeType; // Passing ownership to the function. That means, object will be deleted, // once Ignite does not need it anymore. User should not use pointer after // they have passed it to Ignite. foo(ignite::PassOwnership(obj2); std::shared_ptr<SomeType> obj3 = std::make_shared<SomeType>(); // Passing smart pointer. In this case, Reference class behaves like // smart pointer of the type, user passes to it. foo(ignite::PassSmartPointer(obj3); {code} You can take a closer look at the code on linked Upsource page. There are also tests with all kind of scenarios in file {{reference_test.cpp}}. Please, review and tell me what do you think. Thanks. > CPP: Implement cache continuous queries. > ---------------------------------------- > > Key: IGNITE-1443 > URL: https://issues.apache.org/jira/browse/IGNITE-1443 > Project: Ignite > Issue Type: Task > Components: platforms > Affects Versions: 1.1.4 > Reporter: Vladimir Ozerov > Assignee: Igor Sapego > Labels: cpp, important, roadmap > Fix For: 2.0 > > -- This message was sent by Atlassian JIRA (v6.3.4#6332)