是否可以将变量/函数返回作为模板参数传递
is it possible to passing a variable/function-return as a template argument
是否可以将函数返回的变量或值作为模板参数传递。
例:
QVariantHash options;
options.insert("fontStyle", fontStyleObject); // QFont fontStyleObject
options.insert("fontColor", fontColorObject); // QColor fontColorObject
Q_FOREACH(const QVariant &option, options){
qDebug() << option.value<option.typeName()>();
}
如您所见,我已将option.typeName()
作为模板参数传递,该方法将对象的类型返回为QString
。
我已经这样做了,但有一条错误消息:error: C2974: 'QVariant::value': invalid template argument for 'T', type expected
.
是否可以将函数返回的变量或值作为模板参数传递? 如果没有,还有什么替代方法可以做到这一点?
如果模板具有非类型模板参数并且函数调用是常量表达式,则有可能。例如
#include <type_traits>
constexpr int foo() {
return 42;
}
template <int x>
std::integral_constant<int, x> bar() { return {}; }
int main() {
bar<foo()>();
}
我认为你根本不需要它,你可以使用
T QVariant::value(( const
您可以将生成的 T 提供给 qDebug(( 运算符<<。您可能需要定义如何打印 T,请查看:http://doc.qt.io/qt-4.8/qdebug.html#writing-custom-types-to-a-stream
for ( auto const & option : options)
qDebug() << option.value(); //returns T automatically
相关文章:
- 通过引用传递参数;函数返回类型是否必须为 VOID?
- 如何在 c++ 窗口中将参数和返回的退出值传递到批处理文件/从批处理文件获取返回的退出值
- 如何将一个函数的返回值作为另一个函数的参数传递?
- C++模板;作为模板参数传递的函数的自动推导返回类型
- 参数传递和返回值如何在程序集级别的 x86 上的 C/C++ 中工作?
- 将指向数组的指针作为函数参数传递,这本身就是另一个函数的返回值?
- 是否可以将变量/函数返回作为模板参数传递
- 矩阵 - 返回并作为参数 c++ 传递
- 传递引用参数并返回引用
- 从作为模板函数参数传递的 std::function 推导返回和参数类型
- 数组在函数中作为参数传递并被访问,那么为什么从函数返回后数组的值会被修改呢?
- 传递返回 void * 作为参数的函数
- 如何在函数中将二维数组作为参数传递,并在 C++ 中返回二维数组
- 将函数作为带有模板返回值的参数传递
- 数组使用的堆栈(参数传递/返回)
- 返回和作为参数传递时的类型检查是否不同
- 将构造函数的返回值作为参数传递
- 返回布尔函数的值,并将指针作为参数传递
- 如何将返回函数中的值作为另一个函数的参数传递,在c++中使用它,然后适当地调用它
- 可变模板与模板函数名和传递参数和返回值