【问题标题】:Maximum number of arguments in MSVC 2012 RC std::thread implementation?MSVC 2012 RC std::thread 实现中的最大参数数?
【发布时间】:2012-06-22 09:14:44
【问题描述】:

显然,当前 MSVC 2012 RC 中 std::thread 实现的 std::thread 参数有最大数量。

此代码在 MSVC 和带有 -std=c++0x 的 g++ 中都能正常编译:

std::thread t = std::thread(printf, "%d, %d, %d, %d", 1, 2, 3, 4);
t.join();

但是对于超过 6 个参数,MSVC 会返回错误:

std::thread t = std::thread(printf, "%d, %d, %d, %d, %d", 1, 2, 3, 4, 5);
t.join();

错误 C2661: 'std::thread::thread' : 没有重载函数需要 7 论据

这是出于某种目的吗?或者可能是 MSVC 实现中的错误?是不是因为 MSVC 中还不支持可变参数模板?

【问题讨论】:

    标签: c++ multithreading visual-c++ c++11 visual-studio-2012


    【解决方案1】:

    MSVC2010 没有可变参数模板,因此它们是在预处理器的帮助下实现的。

    我认为您可以设置 #define 来设置支持的参数数量。等我回到家后,我可以查看是哪一个。

    编辑

    我刚刚意识到这是大约 2012 年的版本。正如在VS connect bug report 中看到的那样,它仍然不支持可变参数模板。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 2013-06-22
    • 2014-08-27
    • 2015-05-03
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多