gpt4 book ai didi

c++ - 禁用模板但允许特化

转载 作者:太空狗 更新时间:2023-10-29 20:53:56 25 4
gpt4 key购买 nike

<分区>

例如,我声明了一个通用模板:

template <class T>
void foo(T value);

但我需要每个类型的程序员都必须声明其特化:

struct my_user_t
{
// ...
};

template <>
void foo<my_user_t>(my_user_t value) {
// ...
}

// Somewhere in big program:
my_user_t my_value;
foo(my_value);

现在,如果程序员忘记为他的用户类型专门化模板,链接器会说它找不到符号,而不是编译器。所以在大程序中很难找到它的使用位置。

我怎样才能像这样声明模板:

template <class T>
void foo(T value) {
static_assert(???, "You must specialize foo<> for your type");
}

这样编译器(不是链接器)会指出我在哪里错误地使用了 foo(my_user_t)

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