Я прочитал несколько ответов на SO с лямбдами, передаваемыми в шаблоны классов, но по какой-то причине я не могу этого достичь ... Я использую g ++ версии 9 с использованием C ++ 17.
#include <string>
struct Type {
Type();
Type(int);
int theVal();
};
template<typename Key, typename Value, Key(*KeyFunc)(Type t) = nullptr>
struct MyClass {
MyClass(){}
~MyClass(){}
void add(const Key key, const Value value){
//do stuff
}
void add(const Value value){
this->add(KeyFunc(value), value);
}
};
int main(){
MyClass<
int,
std::string,
+[](Type t){
return t.theVal();
}
> instance;
Type value(100);
instance.add(value);
return 0;
}
Сообщение об ошибке говорит мне, что я не могу иметь лямбду в шаблоне.