指向static作为模板参数的指针/使用c字符串实例化模板

时间:2013-11-28 21:21:25

标签: c++ string templates pointers static

我知道这段代码是邪恶的,我知道我不应该这样做,我知道我会在编码器中烧掉这个但是无论如何:

据我所知,可以将int用作template parmerer std::get。 我想使用char *

template<char * str>
struct printer {
    void operator() () const {
        std::cout<<str;
    }
};
到目前为止,在this article的帮助下,我成功地进行了编译和运行

template<char ** str>
struct printer {
    void operator() () const {
        std::cout<< *str;
    }
};

extern char * bla;
char * bla = (char *)"bla content";

int main() {
    printer<&bla> print;
    print();
}

有两个缺点:

  1. 双指针
  2. 我必须定义远离我使用它们的值(字符串内容)
  3. 完美将是

    printer<"bla"> print;
    

    但编译器显然不喜欢这个

    任何人都可以帮助我克服至少后者的“问题”

    修改的 我正在使用g ++ 4.8.0

1 个答案:

答案 0 :(得分:1)

如果你真的需要将它用作模板参数,那么这是一个新尝试! :)

修改

http://ideone.com/NGgXxT

template<char... str>
struct staticString {
    static std::string c_str() {
        return std::string{str...}.c_str();
    }
};

基本上,char...变量应该可以解决问题。