VS2010 和 VS2012 以及 C++11 错误 C2059:语法错误:"..."怎么走?



>我尝试编译简单的 C++11 代码(我主要针对 vs2010,也作为 vs 2012 的辅助选项),他们说它应该编译并且可以在一些现代编译器上编译所以我想知道如何编译包含以下结构的代码:

struct C {
    A *_first__;
    B *_second__;
     C(A * _first__, B * _second__):_first__(_first__), _second__(_second__) {
    } template < typename K, typename ... T > static auto _a_caller__(K * k, T && ... args)->decltype(k->a(std::forward < T > (args) ...)) {
    return k->a(std::forward < T > (args)...);
    }
    template < typename...T > auto a(T &&...args)->decltype(_a_caller__(_first__, std::forward < T > (args)...)) {
        return _a_caller__(_first__, std::forward < T > (args)...);
    }
    template < typename...T > auto a(T &&...args)->decltype(_a_caller__(_second__, std::forward < T > (args)...)) {
        return _a_caller__(_second__, std::forward < T > (args)...);
    }
    template < typename K, typename...T > static auto _b_caller__(K * k, T && ... args)->decltype(k->b(std::forward < T > (args) ...)) {
        return k->b(std::forward < T > (args)...);
    }
    template < typename...T > auto b(T &&...args)->decltype(_b_caller__(_first__, std::forward < T > (args)...)) {
        return _b_caller__(_first__, std::forward < T > (args)...);
    }
    template < typename...T > auto b(T &&...args)->decltype(_b_caller__(_second__, std::forward < T > (args)...)) {
        return _b_caller__(_second__, std::forward < T > (args)...);
    }
};

在 vs 2010 中,如果在 vs2012 中不可能?

VS2010 和 VS2012 中都不支持可变参数模板:http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspxVS2012 CTP支持它们:http://blogs.msdn.com/b/vcblog/archive/2012/11/02/visual-c-c-11-and-the-future-of-c.aspx

如果您打算使用 CTP,另请参阅 VS 2012 中的可变参数模板(Visual C++ 2012 年 11 月 CTP)。

最新更新