В этом коде (готовый к компиляции):Почему я получаю ноль?
#include "stdafx.h"
#include <iostream>
#include <sstream>
using std::cout;
template<class T, int first, int second>
T make()
{
T result = T();
std::stringstream interpreter;
interpreter << first << '.' << second;
interpreter >> result;
return result;
}
template<int first, int second, class T = double>
struct Make
{
typedef T value_type;
static value_type value;
};
template<int first, int second, class T>
T Make<first,second,T>::value = make<T,first,second>();
template<int first, int second>
struct Real
{
typedef double type;
static type value;
};
template<int first, int second>
typename Real<first,second>::type typename Real<first,second>::value = typename Make<first,second>::value;
int _tmain(int argc, _TCHAR* argv[])
{
//cout << Make<1,2>::value << '\n';//UNCOMMENT THIS AND SEE WHAT I MEAN
cout << Real<1,2>::value;
return 0;
}
Пожалуйста, смотрите комментарий 4 строки выше.
Почему я получил нижний план? Разве не нормально задавать вопрос о теме, с которой у вас проблемы? –
Скорее всего, это поможет перечислить фактический и ожидаемый результат, а также использовать компилятор. – SCFrench
Нет, это потому, что ваш вопрос непонятен. Если вы сказали «// прокомментируйте это, чтобы воспроизвести проблему», это будет иметь смысл. код в его нынешнем виде отлично работает. –