相关疑难解决方法(0)

Variadic模板参数总是必须是最后的?

我是否总是必须在模板参数的末尾放置可变参数模板参数?

template <size_t begin = 0U, typename... Tp>
void foo(tuple<Tp...> t);
Run Code Online (Sandbox Code Playgroud)

例如,我得到了各种错误:

#include <functional>
#include <iostream>
#include <string>
#include <tuple>
using namespace std;

template <typename... Tp, size_t begin = 0U>
enable_if_t<begin == sizeof...(Tp), void> foo(tuple<Tp...>& t){
    cout << endl;
}

template <typename... Tp, size_t begin = 0U>
enable_if_t<begin < sizeof...(Tp), void> foo(tuple<Tp...>& t) {
    cout << get<begin>(t) << ' ';
    foo<Tp..., begin + 1>(t);
}

int main() {
    tuple<int, string, float> t = make_tuple(42, "Jonathan Mee", 13.13);

    foo(t);
}
Run Code Online (Sandbox Code Playgroud)

当 …

c++ parameters templates variadic-templates

2
推荐指数
1
解决办法
498
查看次数

va_list c ++有问题

我只是想用一个可变数量的参数编写一个非常简单的函数,所以我可以为一个赋值编写一个类似于printf的函数.看完文档之后,va_list我不确定为什么这段代码会一直给我运行时错误:

在此输入图像描述

这是我的代码:

void print(string sOne , ...);
void main()
{
    print("first string", "second string", "third String");
    system("pause");
}

void print(string sOne , ...)
{
    va_list arguments;
    va_start(arguments, sOne);
     while ((va_arg(arguments, int)) != 0)
    {
        string printString = va_arg(arguments, string);
        cout << printString;
    }
    va_end(arguments);
}
Run Code Online (Sandbox Code Playgroud)

c++ arguments variadic-functions variable-assignment

0
推荐指数
1
解决办法
1558
查看次数