__ event T e (args);
В строке 9 VS выдает мне зеленые неровности под буквой 'e' с предупреждением: определение функции для 'e 'not found.
При компиляции / сборке генерируется внутренняя ошибка C1001, возникшая в компиляторе (снова строка 9).
Я попытался переименовать переменную, попытался удалить шаблон и просто работаю с обычными типами, попробовал сделать его опубликованным c.
Если кто-то может помочь, это будет очень признательно, спасибо. (Весь код, вероятно, не нужен, но просто чтобы дать представление о том, что я собираюсь)
#include <cstdarg>
#include <functional>
#include <iostream>
template <typename T, typename ... args>
[event_source(native)]
class Action {
private:
__event T e(args);
public:
~Action() {
__unhook(this);
};
void operator +=(std::function<T(args...)> f) {
__hook(e, this, &f);
}
void operator -=(std::function<T(args...)> f) {
__unhook(e, this, &f);
}
void operator()(args...) {
__raise e(args);
}
};
void print(const char* s) {
std::cout << s << std::endl;
}
int main() {
Action<void, const char*> printAction;
printAction += print;
printAction("Print a string.");
printAction -= print;
}