pragma solidity ^0.4.25;


contract SimpleStorage {
    uint value;
    function delegate(uint _val) public {
        // store(_val); ← これはエラー
        // ↓ これはOK
        require(address(this).call(bytes4(keccak256("store(uint256)")), _val), "call failed");
    }
    function store(uint _val) external {
        value = _val;
    }
    function getMul() public view returns(uint) {
        return value * 2;
    }
}