使用C++中的模板函数确定常量

use*_*452 5 c++ templates const

我想使用模板函数确定类型是否为const,例如:

template <typename TTYPE> bool IsConst(TTYPE) {return false;}

template <typename TTYPE> bool IsConst(const TTYPE) {return true;}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,任何替代建议?

chr*_*ris 11

你在寻找什么std::is_const.如果你给它的类型是const,value那么true.如果没有,value将会false.

以下是您可以在该页面上找到的示例:

#include <iostream>
#include <type_traits> //needed for is_const

int main() 
{
    std::cout << boolalpha; //display true/false, not 1/0
    std::cout << std::is_const<int>::value << '\n'; //int isn't const
    std::cout << std::is_const<const int>::value  << '\n'; //const int is const
} 
Run Code Online (Sandbox Code Playgroud)

输出:

false
true
Run Code Online (Sandbox Code Playgroud)

由于您尝试自己创建,我建议您查看提供的可能实现,以了解这些工作如何工作,以防您将来需要制作一个.这是一个很好的学习经历.