C++模板非类型参数类型推导

标签 c++ templates c++11 metaprogramming

我正在尝试做这项工作:

template < typename T, T VALUE >
void            f()
{
    /* ... */
}

int             main()
{
    f<10>();    // implicit deduction of [ T = int ] ??
    return (0);
}

目的是简化更复杂的模板。

经过多次搜索,我没有找到在 C++0x 上执行此操作的任何方法,因此 stackoverflow 是我最后的选择。

  • 没有指定所有类型的 T 可能...
  • 我使用的是 g++ C++0x,所以性感的东西是允许的。

最佳答案

C++0x 引入了 decltype(),它完全可以满足您的需求。

int main()
{
  f<decltype(10), 10>(); // will become f<int, 10>();
  return 0;
}

关于C++模板非类型参数类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737374/

相关文章:

c++ - 获取所有函数重载的参数类型

c++ - CMake 错误 : CMake was unable to find a build program corresponding to "MinGW Makefiles"

c++ - 在单链表上实现模板的问题

c++ - 从另一个部分特化的模板类继承部分特化的模板类

c++ - 你如何对每个元素执行转换并将结果附加到 C++ 中?

c++ - QT qml 按钮虽然被禁用但发出信号被点击

c++ - OSX 10.10 CMake 3.0.2 和 clang 找不到本地 header

c++ - 如何将支持的类型添加到现有的遗留 std::list 操作函数(即模板?)

C++新手问题: designing a function to return a vector of either string or double--overload or template?

c++ - 数字文字运算符错误