gpt4 book ai didi

c++ - 是否可以为零模板参数进行模板特化?

转载 作者:行者123 更新时间:2023-12-01 09:13:00 25 4
gpt4 key购买 nike

假设我有一个这样的类(class):

template <typename T>
struct S {
int n = 1;
S(T t) : n(t) {};
S() = default;
};
是否可以更改某些内容以便可以实例化 S如果我想使用这样的默认构造函数,没有模板参数 S s {}; ?
我想出的最好的办法是为模板参数分配一些虚假的默认值,使其成为可选的:
#include <iostream>

struct default_ {};

template <typename T = default_>
struct S {
int n = 1;
S(T t) : n(t) {};
S() = default;
};


int main() {
S<int> s1 {10};
std::cout << "Value:\n" << s1.n << std::endl;
S s2 {};
std::cout << "Value:\n" << s2.n << std::endl;
}
https://repl.it/repls/RegalCoolDeal

最佳答案

T仅用于构造函数,您不需要模板整个类:

#include <iostream>

struct S {
int n = 1;

template <typename T>
S(T t) : n(t) {};

S() = default;
};

int main() {
S s1 {10};
std::cout << "Value:\n" << s1.n << std::endl;
S s2 {};
std::cout << "Value:\n" << s2.n << std::endl;
}

关于c++ - 是否可以为零模板参数进行模板特化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62847200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com