C++ 11 条件模板函数的别名

Adr*_*ián 5 c++ function-templates c++11 template-aliases

在 C++ 11 中,我想创建一个具有两个专业化的模板别名,每个专业化解析为不同的函数。

void functionA();
void functionB();

template<typename T = char>
using Loc_snprintf = functionA;

template<>
using Loc_snprintf<wchar_t> = functionB;
Run Code Online (Sandbox Code Playgroud)

所以我可以打电话给eg Loc_snprintf<>(),它决定了functionA()

显然似乎不可能(编译)。是否有一些最终简单的东西可以模仿它(也许使用类模板)?

Som*_*ude 6

在 C++11 中,实际上不可能创建专门化的别名。您必须创建实际的专业化:

template<typename T = char>
void Loc_snprintf()
{
    functionA();
}

template<>
void Loc_snprintf<wchar_t>()
{
    functionB();
}
Run Code Online (Sandbox Code Playgroud)

在 C++14 中,可以使用变量模板来创建一种别名。