Unityのラーニングに指定されたのでさくせいしました。
iPhoneゲームを20分間で作る【メダルプッシャー編】
Unity Web Player | WebPlayer
struct A{ int value_; }に対して
A a; a.*&A::value_ = 20;とアクセスできることがわかりました。
template <class MemPtr, MemPtr p> MemPtr Access() { return p; } a.*Access<int A::*, &A::value_>() = 40;で、aのメンバではないものを呼び出しているようにしか見えませんでしたが
a.*(Access<int A::*, &A::value_>()) = 40;っつーことらしく、
a.*(&A::value_ ) = 40;となるわけで問題ないですね。
void A::set(int _value){ value_ = _value;}を呼び出す際は
(a.*Access<int A::*, &A::value_>())(50);です。
void A::call(){ (this->*&A::set)(50);}とか
void A::call(){ (this->*Access<int A::*, &A::value_>())(50) ;}となりますでしょうか。
Function.prototype.funcObj = function() { return { valueOf : this } }; var random = function() { var res = Math.random(); alert('randomL:'+res); return res; } function add(i, j) { alert('add'); if(j>0){ return i+j; } return j; } alert(add(random(), 1)); alert(add(random(), 0)); alert(add(random.funcObj(), 1)); alert(add(random.funcObj(), 0));普通にrandom()を引数に渡すとadd()の第二引数に関係なく必ずrandom()が実行されますが、
AK Alaska - Juneau
AL Alabama - Montgomery
AR Arkansas - Little Rock
AS American Samoa
AZ Arizona - Phoenix
CA California - Sacramento
CO Colorado - Denver
CT Connecticut - Hartford
DC District of Columbia, which is the seat of the Federal government
DE Delaware - Dover
FL Florida - Tallahassee
GA Georgia - Atlanta
GU Guam
HI Hawaii - Honolulu
IA Iowa - Des Moines
ID Idaho - Boise
IL Illinois - Springfield
IN Indiana - Indianapolis
KS Kansas - Topeka
KY Kentucky - Frankfort
LA Louisiana - Baton Rouge
MA Massachusetts - Boston
MD Maryland - Annapolis
ME Maine - Augusta
MI Michigan - Lansing
MN Minnesota - Saint Paul
MO Missouri - Jefferson City
MP Northern Mariana Islands, Commonwealth
MS Mississippi - Jackson
MT Montana - Helena
NC North Carolina - Raleigh
ND North Dakota - Bismarck
NE Nebraska - Lincoln
NH New Hampshire - Concord
NJ New Jersey - Trenton
NM New Mexico - Santa Fe
NV Nevada - Carson City
NY New York - Albany
OH Ohio - Columbus
OK Oklahoma - Oklahoma City
OR Oregon - Salem
PA Pennsylvania - Harrisburg
PR Puerto Rico, Commonwealth
RI Rhode Island - Providence
SC South Carolina - Columbia
SD South Dakota - Pierre
TN Tennessee - Nashville
TX Texas - Austin
UT Utah - Salt Lake City
VA Virginia - Richmond
VI the United States Virgin Islands
VT Vermont - Montpelier
WA Washington - Olympia
WI Wisconsin - Madison
WV West Virginia - Charleston
WY Wyoming - Cheyenne