Я пытаюсь понять, как лучше всего использовать блоки в моем шаблонном классе.У меня есть следующий фрагмент кода:
template<typename T, typename R>
class MyClass {
public:
typedef R (^Block)(T);
MyClass(Block blk) {}
};
void testMyClass() {
MyClass<int,int>::Block blk(^(int arg) {
return 1 + arg;
});
}
Когда я пытаюсь скомпилировать это, я получаю следующее сообщение об ошибке:
error: cannot convert ‘int (^)(int)’ to ‘R (^)(T)’ in initialization
Я что-то упускаю из виду?Я пытаюсь сделать что-то, что не разрешено?GCC принимает программу, если я делаю то же самое без шаблонов.