Author |
Topic |
|
joostn
Junior Member
16 Posts |
Posted - Mar 13 2015 : 07:26:02 AM
|
Maybe the idea is completely wild, but this would be handy for me:
If I have a function which takes a std::function<> as a parameter:
void f1(std::function< T1<A>(const T2&) > func); it would be nice if VAX could generate the lambda parameters for me as soon as I begin a lambda function:
f1([
would expand to
f1([](const T2& param1) -> T1<A>{
}) |
|
joostn
Junior Member
16 Posts |
Posted - Mar 13 2015 : 07:28:44 AM
|
..or maybe not autocomplete the lambda function, but offer it as a smart suggestion when typing f1( |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Mar 13 2015 : 4:33:26 PM
|
I need a better idea of what you are thinking here before forming an opinion on this.
Your code samples read like a function declaration and implementation. Yet the implementation, if that is what it is, does not match the declaration. So what is going on here?
I don't really know anything about lambda's yet, it is something I need to read up on. But a quick search for std::function says that this can contain functions, classes or lambda's. So we don't get to just assume that a std::function contains a lambda. |
zen is the art of being at one with the two'ness |
|
|
joostn
Junior Member
16 Posts |
Posted - Mar 13 2015 : 5:07:05 PM
|
Here's a more concrete example:
class HttpClient
{
public:
void GetWebPage(const std::string &url, std::function<void(const std::string &)> callback);
};
HttpClient client;
client.GetWebPage("http://www.wholetomato.com/", [](const std::string &result){
// this gets called asynchronously:
std::cout << result;
});
Here it's pretty simple, but I'm using templated classes and smart pointers, and spelling out the lambda signature becomes more tedious.
And you're right, the std::function does not necessarily have to be filled by a lambda function but it is a common pattern. So I thought it might be suggested as soon as the [ is typed, or as a smart suggestion after entering the comma. |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Mar 13 2015 : 8:58:23 PM
|
This example makes the code clearer, but does not help me understand what you are after here. Are you wanting help generating a function implementation, or a function call?
I am not sure how we could help you generate the function call, since how would we know what to use as the parameters? |
zen is the art of being at one with the two'ness |
|
|
joostn
Junior Member
16 Posts |
Posted - Mar 14 2015 : 02:15:08 AM
|
The function call. More specifically I would like VAX to generate the second parameter in the GetWebPage function call.
So when I start typing this:
client.GetWebPage("http://www.wholetomato.com/", [
VAX could suggest to expand it to this:
client.GetWebPage("http://www.wholetomato.com/", [](const std::string &){} The lambda signature can be derived from the std::function<> parameter definition.
Again, the lambda is not the only possible parameter for GetWebPage, I might want to pass a pointer to static function instead, so it should be presented just as a suggestion. But once you start using lambdas this becomes a common pattern.
|
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Mar 14 2015 : 8:49:26 PM
|
Having done some reading up on C++ and Lambda functions I can now see what you are talking about, and this does make sense, so I have put in a feature request for this:
case=88468
Thank you for taking the time to explain. I am not sure how likely we are to do this, but it does seem worth considering, especially since we are starting to see more interest in lambda's. |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|