[cfe-dev] objc++ enhancements for new c++ features
James Gregurich via cfe-dev
cfe-dev at lists.llvm.org
Wed Mar 28 14:15:34 PDT 2018
> On Mar 28, 2018, at 3:07 PM, John McCall <rjmccall at apple.com> wrote:
>
> I think we actually take the parameter as a pr-value, which in some ways is better because it means that you can pass something either by copy or by move. I don't know if we then try to move-assign the ivar from the parameter, but we certainly should.
>
> I think the more interesting question is the type of the getter. The getter really can't return a && or pr-value. Do we recognize that a type is move-only and just make the getter return a `const &`? Does that mean we forbid synthesizing such a property as atomic?
Let me focus on issues I encounter that make @property problematic or inconvenient. perhaps I'm misusing the tool.
consider the code below. What I want to be able to do is get a reference to the map instance variable and modify it. but the code doesn't compile because the property wants to return a copy.
@interface AppDelegate ()
@property (nonatomic, assign) std::map<std::string, int> prop;
@end
@implementation AppDelegate
@synthesize prop;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
auto& tmpP = self.prop;
tmpP["test"] = 1;
}
@end
ok. so I try this...
@property (nonatomic, assign) std::map<std::string, int>& prop;
but then I encounter the following that doesn't work...
self.prop = std::map<std::string, int>{{"test",1}, {"test2",2}};
and of course this doesn't compile...
@property (nonatomic, assign) std::map<std::string, int>&& prop;
The only answer I see here is to manually write the accessor functions and have an explicit instance variable declaration. I'd like to be able to use @property for convenience, but I see no way to make it work for what I naturally want. is there an answer that isn't "don't use @property"?
-James
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180328/73d7532d/attachment.html>
More information about the cfe-dev
mailing list