如何检查是否提供了可选的类参数
How to check if optional class argument is supplied or not?
假设我有这个结构
struct float2 {
float x;
float y;
}
然后在的某个地方有一些构造函数
struct constructable {
constructable(float2 opt = float2()) {
if (opt == float2()) { //doesn't work
//fill out opt with default values
}
}
}
如何检查某个内容是否通过了opt?
而不是
struct constructable {
constructable(float2 opt = float2()) {
if (opt == float2()) { //doesn't work
//fill out opt with default values
}
}
};
如果在编译时已知所需的默认值,那么只需执行
struct constructable {
constructable(float2 opt = {2.72, 3.14} ) {
}
};
否则使用两个构造函数:
struct constructable {
constructable() {
// Use whatever computed values
}
constructable(float2 o) {
// Use o
}
};
相关文章:
- 如何检查给定的参数是否为 cv::noArray()?
- 用于检查值是否为其任何参数的帮助程序函数
- 模板化检查是否存在带有参数列表的类成员函数?
- SFINAE 检查模板参数运算符
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 检查两个模板参数是否相同
- 使用参数包自动执行dynamic_cast检查
- 检查类是否具有模板专用化(使用布尔值或 int 等模板参数)
- 为什么 std::bind 静态类型检查传递给函数的参数?
- 如何检查参数包是否具有执行顺序中的确切类型
- C++编译时检查是否可以用某种类型的参数调用重载函数
- 如何检查模板参数是否为给定值?
- 在编译时检查未实例化的类模板是否继承自其第一个模板参数
- C ++回测问题:如何检查构造函数在假定失败时是否失败(给定输入的无效参数)
- 如何在 C++ 中检查类构造函数中的参数大小
- 在编译时使用可变参数模板在 c++ 中使用参数类型检查获取函数的参数数
- 返回其参数或检查 nullptr 的函数
- std::使用compare参数映射检查第一个和第二个值
- "return-by-reference"或"pass-by-reference"参数何时与constexpr兼容?
- 命令行参数错误检查,查看整个参数是否为整数