Специализация статической константы
От: placement_new  
Дата: 01.06.15 06:13
Оценка:
Добрый день!

У меня не получается скомпилить след. код с помощью VS C++, тогда как с gcc проблем нет.

// file.h
#pragma once

template<typename T>
struct S 
{
    static const int s;
};
template<> const int S<int>::s;


// file.cpp
#include "file.h"
template<> const int S<int>::s = 42;


 'S<int>::s' : const object must be initialized if not extern


Подскажите кто прав?
Re: Специализация статической константы
От: savitar  
Дата: 01.06.15 08:25
Оценка:
Здравствуйте, placement_new, Вы писали:

_>...


можно упростить до
const int i;
Re: Специализация статической константы
От: uzhas Ниоткуда  
Дата: 01.06.15 08:30
Оценка:
Здравствуйте, placement_new, Вы писали:

_>Подскажите кто прав?


предположу, что студия неправильно посчитала, что

template<> const int S<int>::s;

это определение. согласно ссылке ниже это должно интерпретироваться, как объявление
http://stackoverflow.com/questions/2342550/static-member-initialization-for-specialized-template-class
Re[2]: Специализация статической константы
От: placement_new  
Дата: 01.06.15 09:22
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, placement_new, Вы писали:


_>>Подскажите кто прав?


U>предположу, что студия неправильно посчитала, что

U>

U>template<> const int S<int>::s;

U>это определение. согласно ссылке ниже это должно интерпретироваться, как объявление
U>http://stackoverflow.com/questions/2342550/static-member-initialization-for-specialized-template-class

Да, это кажется наиболее вероятным.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.