gpt4 book ai didi

c++ - 大类型的 const T& 和简单类型的 T 的特化模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:19 25 4
gpt4 key购买 nike

我需要施展魔法:

我有一个模板:

template <class T>
void Foo(const T& value)

但我需要将它专门用于简单类型,例如 boolint 等,这样它将通过 const 值而不是 const 引用传递:

template <>
void Foo<bool>(const bool value)

template <>
void Foo<int>(const int value)

// and so on, including std::nullptr_t

template <>
void Foo<std::nullptr_t>(std::nullptr_t)
{
// some special behavior
}

但是无法编译。

如何正确操作?

最佳答案

如果所有基本类型和指针的功能都相同,我想您可以使用 std::is_fundamental , std::is_pointerstd::enable_if :

template<typename T>
std::enable_if_t<std::is_fundamental<T>::value || std::is_pointer<T>::value>
foo(const T) {
std::cout << __PRETTY_FUNCTION__ << std::endl;
}

template<typename T>
std::enable_if_t<!std::is_fundamental<T>::value && !std::is_pointer<T>::value>
foo(const T&) {
std::cout << __PRETTY_FUNCTION__ << std::endl;
}

关于 wandbox 的示例

关于c++ - 大类型的 const T& 和简单类型的 T 的特化模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482925/

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