Код: Выделить всё
struct S {
template< typename T >
operator T () {
std::cout
Из моего чтения стандарта i get t = const int < /code>.
Но GCC и Clang говорят, что T будет иметь тип int < /code>. < /p>
from [temp.deduct.conv]: < /p>
Если A-CV-квалифицированный тип, то верхний уровень CV-квалификаторов типа A игнорируется для вычета типа.
, если a-тип ссылки, тип, упоминаемый A A, используется для вычета типа. не CV-квалифицирован. Затем, во -вторых, является ссылочным типом, и поэтому I Remove & из и получить выведен a = const int .
Теперь я сравнивал выведен A = const int с t и получить t = const int .
obster
Подробнее здесь: [url]https://stackoverflow.com/questions/79753825/template-argument-deduction-for-templated-conversion-operator[/url]