У меня есть функция, которая возвращает построенное по умолчанию значение типа шаблона:
template<typename T>
T do_stuff()
{
return T();
}
Я использую его следующим образом:
int main(int argc, char** argv)
{
std::string str("hello");
int a = 10;
int *p = &a;
str = do_stuff<std::string>();
a = do_stuff<int>();
p = do_stuff<int*>();
return 0;
}
После его использования у меня есть: str
- пустая строка, a
eqauls 0 и p
- пустой указатель.
Я могу понять, почему переменная std::string
становится пустой строкой (у нее есть конструктор по умолчанию, который создает пустую строку).
Но почему переменная int
становится 0, а указатель становится нулевым указателем.
Это поведение шаблона по умолчанию?
Я использую gcc 4.6.6 под Linux Centos.