Especialize um modelo de função void para um const char [N]

Tenho uma função de modelo que quero especializarfoo paraconst char[N] (cadeias codificadas)

    template<typename T>
const std::string foo() ;

    template<typename T,int N>
const std::string foo<T[N]>() { return "T[N]"; } //this doesn't work for const char[12]

    template<>
const std::string foo<const char*>() { return "Const char"; } //this doesn't work for const char[12]

   template<typename T>
   void someother function(T obj)
   {

   string s = foo<T>(); //I want to overload when T is const chat[N]
   }

   function("Hello World");  //When calling like this the type is const char[12]

Eu pensei que posso fazer algo como foi feitoAqu.
Mas isso não funciona tão bem, porque não estou passando um parâmetro, apenas um tipo de model
Eu poderia fazer assim, mas não há razão para passar um parâmetro para essa funçã

O exemplo não funciona porque não estou passando uma variável. Tentei algumas coisas, mas não consigo fazê-lo funcionar.

Esta é a única especialização que não sou capaz de resolver. Eu especializei a função para int, string e outros tipos e eles funcionam be

 error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const __cdecl foo<char const [12]>(void)" 

A primeira declaração de modelo não tem nenhum código em propósito ... Estou tentando obter a especialização certa que será usada no meu cas

questionAnswers(2)

yourAnswerToTheQuestion