gpt4 book ai didi

c++ - 如何为内联变量模板创建自定义点?

转载 作者:行者123 更新时间:2023-11-30 01:39:16 32 4
gpt4 key购买 nike

引入内联变量模板以使其必须专用于自定义类型的最佳方法是什么?例如,

template<typename T> constexpr inline T max_value_v;

struct S {
int m = 0;
};
static_assert(max_value_v<S>.m == 0);

compiles在海湾合作委员会上。目的是 max_value_v<T>仅在专用于 T 时有效.但是max_value_v的声明也是一个定义(默认初始化)所以 max_value_v<S>被接受。

有没有办法强制S的作者?专业max_value_v这样只有 max_value_v<S> 的预期值提供给用户?

最佳答案

Is there a way to force the author of S to specialize max_value_v so that only the intended value of max_value_v<S> is provided to users?

看来不是。 S可以默认初始化,因此应用主模板。

What's the best way to introduce an inline variable template so that it must be specialized for custom types?

您可以提供一个类模板作为定制点:

template<typename T> struct max_value;
template<typename T> constexpr inline T max_value_v = max_value<T>::value;

现在,S 的作者|必须专攻max_value为了 max_value_v<S>编译:

template<>
struct max_value<S> {
static constexpr S value { INT_MAX };
};

static_assert(max_value_v<S>.m == INT_MAX);

关于c++ - 如何为内联变量模板创建自定义点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46122324/

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