gpt4 book ai didi

c++ - 模板函数特化默认

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:46 26 4
gpt4 key购买 nike

<分区>

我正在尝试创建一个适用于特定数据类型的类,并且我希望在不支持数据类型时出现编译时错误。

我尝试像这样专门化模板。

template<>
float Foo::get<float>(const std::string& key)
{
return std::stof(key);
}

并在泛型函数中放置一个 std::static_assert 因为我只需要指定的这些类型。

template<class T>
T Foo::get(const std::string&)
{
static_assert(false, "unsupported data type");
return T(0);
}

不幸的是,我得到了编译错误(静态断言失败),即使我有一个专门针对这种类型的函数。

我找到了一种只针对特定类型执行此操作的方法,但它看起来有点愚蠢而且不通用。

T Foo::get(const std::string&)
{
static_assert(
std::is_same<T,float>::value ||
std::is_same<T,double>::value ||
std::is_same<T,bool>::value ||
std::is_same<T,uint32_t>::value ||
std::is_same<T,int32_t>::value ||
std::is_same<T,std::string>::value,
"unsuported data type");
return T(0);
}

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