是否可以在C++ 11(不晚于此)中编写一个函数来验证在编译时传递给它的字符的唯一性

verify('a');
verify('b');
verify('c');
verify('a');  //should cause compilation error

[MK编辑以回答一些问题]:
  • 调用始终在相同的范围内,就像上面一样,一个接一个。
  • 宏解决方案也是可以接受的
  • 也可以接受非类型的模板参数
  • 最佳答案

    并非完全符合您的要求,但是鉴于您的约束(可以接受相同的范围和宏解决方案),您可以尝试执行以下操作:

    #define verify(x) class _tmp_##x {};
    

    例子:
    int main()
    {
        verify(a);
        verify(b);
        verify(a);
        return 0;
    }
    

    由于重新定义了本地类_tmp_a,将导致编译失败。

    关于c++ - 在编译时检查字符的唯一性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48531538/

    10-11 23:23