在cpp reference page中指定的协同程序的第一个限制是,协程不能使用可变参数。但是当我尝试使用一个在其参数列表中接受可变参数的协程时,例如:
在GCC-11和Clang-14中它能够良好运行,只有MSVC-19会给出一些警告,但这些警告似乎与coroutines和varidaic参数无关,并在警告之后打印输出。请参见compiler explorer上的代码。那么,cppreference页面上的语句:“协程不能使用可变参数…”到底是什么意思?
template<typename ...Args>
ReturnObject coro_with_variadic_argument1(Args ...args){
std::cout << "size of variadic args: " << sizeof...(args) << "\n";
co_await std::suspend_never{};
}
在GCC-11和Clang-14中它能够良好运行,只有MSVC-19会给出一些警告,但这些警告似乎与coroutines和varidaic参数无关,并在警告之后打印输出。请参见compiler explorer上的代码。那么,cppreference页面上的语句:“协程不能使用可变参数…”到底是什么意思?
是否有一个例子,其中创建具有可变参数的C++协程是非法的?