Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:无法转换‘;国际(二)(国际)和"x2019 ;;至‘;(二)(T)及"x2019 ;;在初始化中_C++_Macos_Gcc_Objective C Blocks - Fatal编程技术网

C++ 错误:无法转换‘;国际(二)(国际)和"x2019 ;;至‘;(二)(T)及"x2019 ;;在初始化中

C++ 错误:无法转换‘;国际(二)(国际)和"x2019 ;;至‘;(二)(T)及"x2019 ;;在初始化中,c++,macos,gcc,objective-c-blocks,C++,Macos,Gcc,Objective C Blocks,我试图了解如何在模板类中最好地利用块。 我有以下代码片段: 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; }

我试图了解如何在模板类中最好地利用块。 我有以下代码片段:

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;
    });
}

我错过了什么明显的东西吗?我是否在尝试做一些不被允许的事情?如果我在没有模板的情况下做同样的事情,GCC会接受该程序。

这是GCC中的一个问题。我在LLVM3下测试了你的程序,它编译得很好


GCC4.2的块实现中存在许多问题,有时可以通过完全限定块声明
^int(int arg){return 1+arg;}
来解决这些问题,但在这种情况下,它无法解决此问题。我强烈建议在Obj-C块的任何进一步工作中使用LLVM/Clang。它的C++支持非常好,尤其是C++ 03的支持。

我不知道这是什么,但它不是C++。块是语言扩展,如果这就是你的意思。我删除了C++标签,因为这不是C++。C++中的编译器特定扩展仍然可以被称为C++吗?我不知道。取消了标签移除。GCC的扩展可以用GCC来构建C++项目。谢谢!我知道它是用clang++复制的,我怀疑这是编译器的问题,但我希望能找到一些解决办法。我最终会改用叮当,但其他问题阻碍了我。
error: cannot convert ‘int (^)(int)’ to ‘R (^)(T)’ in initialization