Позволяет изменить довольно неуклюжую нотацию C++ на более теоретическую (иш) модель, чтобы мы могли четко определить, что вы хотите.
template<typename A> class SomeB { ... };
На самом деле означает, что у вас есть штуковина под названием SomeB
, который принимает в простом виде и возвращает другой простой тип:
SomeB : typename -> typename
И, например, если у вас есть «шаблон параметр шаблона» вещь как то:
template<template<typename> class A> class SomeB { ... };
тогда что бы перевести так:
SomeB : (typename -> typename) -> typename
Теперь вот как я понял, чего вы хотите. Вы говорите, что «у меня есть эти два парня здесь»
SomeA : typename -> typename
SomeB : typename -> typename
"Если бы я хотел применить как SomeA<SomeB>
, что бы быть незаконным, так как SomeB
не typename
. - это typename->typename
Если только я мог применить что SomeB
к чему-то, чтобы получить простой тип ...
о Как насчет я применяю его как SomeB<SomeA>
нет, это было бы незаконным, поскольку SomeB
не typename
-? это typename->typename
, Если бы я мог применить это SomeA
к чему-то, чтобы получить простой тип ...
Oh! Как насчет того, чтобы применить его как SomeA<SomeB>
? Нет, это было бы незаконным с SomeA
не является typename
- это typename->typename
. Если бы я мог применить это SomeB
к чему-то, чтобы получить простой тип ...
Oh! Как насчет того, чтобы применить его как SomeB<SomeA>
? Нет, это было бы незаконным с SomeA
не является typename
- это typename->typename
. Если бы я мог применить этот код SomeB
к чему-то, чтобы получить простой тип ... "
И так далее - У вас есть идея, и это очень похоже на все классические логические парадоксы, как the liar paradox Более формально, то, что вы хотите сделать, это называется impredicative definition
И угадайте что...? Type theory was invented от Bertrand Russel, чтобы уничтожить непроизводительность.
Таким образом, ваше намерение заключается не только в конфликте с возможностью выразить себя с использованием C++, но и в противоречии с основными идеями теории типов. И, на мой взгляд, Не имеет никакого смысла. Как парадокс лжеца.
Ваша концепция не имеет смысла. – CashCow
@CashCow: Какая концепция? – Deduplicator
Извините, но в C++ нельзя определить типы рекурсивных рекурсивных типов. – Deduplicator