Вам потрібно вміти керувати аргументами шаблону
template <std::string temp>
void f() {
// ...
}
f<"foo">();
f<"bar">(); // different function!?
Тепер імпл повинен буде створити унікальну послідовність символів для, std::string
або, щодо цього, для будь-якого іншого довільного класу, визначеного користувачем, зберігаючи певне значення, значення якого не відоме реалізації. І крім того, значення довільних об’єктів класу не можна обчислити під час компіляції.
Планується розглянути можливість дозволити літеральні типи класів як типи параметрів шаблону для post-C ++ 0x, які ініціалізуються константними виразами. Їх можна спотворити шляхом рекурсивного спотворення членів даних відповідно до їх значень (для базових класів, наприклад, ми можемо застосувати обхід з глибини, зліва направо). Але це точно не буде працювати для довільних класів.