C ++ Внутренняя ошибка компилятора при работе с собственными событиями - PullRequest
0 голосов
/ 20 марта 2020

__ 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;
}
...