{"image_url":null,"provider_name":"Hatena Blog","description":"\u307e\u305a\u306fC++\uff0e #include <iostream> template <typename T> struct A { typename T::X v; }; struct B { typedef int X; }; void main() { A<B> x; x.v = 42; std::cout << x.v << std::endl; } \u6b21\u306bD\u8a00\u8a9e\uff0e import std.stdio; struct A(T) { T.X v; } struct B { alias int X; } void main() { A!B x; x.v = 42; writeln(x.v); } \u4f55\u3067D\u306f\u2026","version":"1.0","blog_url":"https://haru-s.hatenablog.com/","url":"https://haru-s.hatenablog.com/entry/20100809/1281370389","type":"rich","height":"190","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fharu-s.hatenablog.com%2Fentry%2F20100809%2F1281370389\" title=\"typename - ...ing logging 4.0\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","categories":["D\u8a00\u8a9e","C++"],"published":"2010-08-09 01:13:09","width":"100%","author_name":"haru-s","title":"typename","author_url":"https://blog.hatena.ne.jp/haru-s/","blog_title":"...ing logging 4.0","provider_url":"https://hatena.blog"}