提问人:XORer 提问时间:11/4/2023 更新时间:11/4/2023 访问量:75
模板化类型名称的 C++ 模板
C++ template of templated typename
问:
我需要使用这样的第三方模板化函数:
template<typename...Types>
void third_party_func(){}
我这样称呼它:
third_party_func<type_1, const type_2>();
我想以某种方式捕捉这种类型。所以我的想法是将其包装到另一个函数中
并借助来捕获该类型。__PRETTY_FUNCTION__
template<typename Funct>
void registerFunct(Funct funct)
{
// parse __PRETTY_FUNCTION__;
funct();
}
当我这样称呼它时:
registerFunct(third_party_func<type_1, const type_2>);
__PRETTY_FUNCTION__
不捕获 .所以我尝试了别的东西
并希望现在能够捕捉到我想要的东西:type_1, const type_2
__PRETTY_FUNCTION__
template<template<typename...FunctParams>typename Funct>
void registerFunct(Funct funct){}
生成错误:缺少模板模板参数的参数列表...
template<template<typename...FunctParams>typename Funct>
void registerFunct(Funct<> funct){}
编译自身,但是当添加实际的函数调用时,不会编译该函数调用...
template<template<typename...FunctParams>typename Funct>
void registerFunct(Funct<FunctParams...> funct){}
生成错误:标识符 FunctParams 未定义...
所以现在我不知道如何正确地做到这一点......
答: 暂无答案
评论
type_1
const type_2
__PRETTY_FUNCTION__
Types
template<typename... Types> void testFunct() { std::cout << __PRETTY_FUNCTION__ << '\n'; }
void testFunct() [with Types = {int, const double}]
signature
<const type1, type2>
<type2, const type1>
const
const
std::is_const_v
template <typename ...T> void registerFunc() { /*do whatever you like with T... */ third_party_func<T...>(); }