【发布时间】:2020-01-24 17:07:04
【问题描述】:
我有一个带模板的课程 在这个类里面有一个变量 T * Variable;和变量字符串str;并且有部分代码的功能:
if(std::is_same<T, string>::value){
*Variable = str;
return 0;
}
当然,尽管由于之前的条件,上述赋值不会对不同的变量起作用,但编译器会在编译时抱怨。 我正在考虑编写带有两个模板参数的条件模板函数来代替上面的赋值:
Assign(Variable, &str);
课前:
template <typename T, typename U>
conditional <T, U> void Assign(T* to, U* from){
;
}
conditional <string, string> void Assign(T* to, U* from){
*to = *from;
}
所以编译器会为我需要的字符串选择专门的一个。如何制定这个?这可以仅针对变量类型制定还是我需要第三个参数?或者,函数内部的主要代码可能存在某种模板条件?
【问题讨论】:
-
你能用
C++17吗?if constexpr -
到目前为止我应该兼容 c++ 11, 14, 17
-
在我看来像xy problem。为什么需要根据类型有条件地赋值?会不会重载这个sn-p来自的函数?